每日練習之排序——鏈表的合并;完全背包—— 兌換零錢

鏈表的合并

題目描述

運行代碼

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{  int a[31];for(int i = 1;i <= 30;i++)cin>>a[i];sort(a + 1,a + 1 + 30);for(int i = 1;i < 30;i++)cout<<a[i]<<" ";cout<<a[30]<<endl;return 0;
}

代碼思路

  1. 定義數組:定義了一個大小為31的整數數組a,但實際上我們只使用前30個位置(從a[1]a[30])。在C++中,數組通常從索引0開始,但這里為了某種原因(可能是題目要求或其他原因),代碼從索引1開始。
  2. 輸入數據:使用for循環從標準輸入讀取30個整數,并將它們存儲在數組a的索引1到30中。
  3. 排序數據:使用std::sort函數對數組進行排序。注意,這里傳遞給sort函數的是數組的起始地址和結束地址(不包括結束地址對應的元素)。
  4. 輸出數據:使用for循環輸出排序后的數組元素。但是,這里有一個小錯誤:循環的條件是i < 30,這意味著它會輸出索引從1到29的元素,而遺漏了索引為30的元素。
  5. 輸出最后一個元素:在for循環之后,單獨輸出索引為30的元素。

改進代碼

  1. 數組索引:為了與C++的常規做法保持一致,并避免潛在的錯誤,最好從索引0開始使用數組。這樣,你就不需要為數組分配額外的空間,也不需要記住從哪個索引開始讀取或寫入數據。
  2. 輸出循環:為了簡潔起見,可以將輸出索引為30的元素的代碼移到for循環中。這樣,你就不需要單獨處理最后一個元素了。
#include<iostream>  
#include<algorithm>  
using namespace std;   
int main()  
{  int a[30]; // 直接定義大小為30的數組  for(int i = 0; i < 30; i++) // 從索引0開始讀取數據  cin >> a[i];  sort(a, a + 30); // 直接使用數組的起始和結束地址  for(int i = 0; i < 30; i++) // 從索引0開始輸出數據  cout << a[i] << " ";  cout << endl; // 在循環后直接輸出換行符  return 0;  
}

?兌換零錢

題目描述

運行代碼

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
const int mod=1e9+7;
int a[20]={1,2,5,10,20,50,100,200,500,1000,2000,5000,10000},dp[100010];
int main()
{dp[0]=1;for(int i=0;i<13;i++)for(int j=a[i];j<=100000;j++)dp[j]=(dp[j]+dp[j-a[i]])%mod;int N,T;cin>>T;while( T-- ){cin>>N;cout<<dp[N]<<endl;}return 0;
}

代碼思路

  1. 初始化dp[0]為1,因為湊成面額0只有一種方式(即不使用任何硬幣)。
  2. 使用兩個嵌套的循環來計算dp數組的其他元素。外層循環遍歷硬幣數組a,內層循環遍歷從當前硬幣面額到100000的所有可能面額。對于每個面額j,我們都檢查是否可以使用當前硬幣a[i]來湊成它。如果可以(即j >= a[i]),則dp[j]的值是原來的值加上dp[j-a[i]](即不使用當前硬幣和使用當前硬幣的湊法數之和)。
  3. 最后,程序讀取測試用例數量T,然后對每個測試用例讀取一個整數N,并輸出dp[N],即湊成面額N的方法數。

改進建議

  1. 避免使用<bits/stdc++.h>:這個頭文件雖然包含了幾乎所有標準庫,但它不是標準C++的一部分,而且會增加編譯時間。建議只包含你需要的頭文件。
  2. 數組大小:雖然這里定義dp數組的大小為100010是足夠的,但如果你想要一個更通用的解決方案,你可以根據輸入的最大可能值來動態分配這個數組的大小。
  3. 輸入驗證:雖然在這個問題中可能不需要,但在實際應用中,驗證輸入的有效性(例如,確保N是非負的)是一個好習慣。
  4. 注釋:添加注釋來解釋代碼的每個部分是如何工作的,以及為什么選擇這種特定的實現方式,可以幫助其他人(或未來的你)更容易地理解代碼。
  5. 優化:雖然對于這個問題來說,當前的實現已經足夠快,但如果你在處理更大的面額或更多的硬幣時,你可能需要考慮更高效的算法,如使用背包問題的優化技術。

改進代碼

#include <iostream>  
#include <vector>  
using namespace std;  
const int MOD = 1e9 + 7;  
const int MAX = 100000; 
vector<int> coin = {1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000};  
// 動態規劃表,用于存儲湊成不同面額的方法數  
vector<int> Amount(MAX + 1, 0);  
int main() {  // 初始化湊成面額0的方法數為1  Amount[0] = 1;   // 動態規劃計算湊成不同面額的方法數  for (int i = 0; i < coin.size(); i++) {  for (int j = coin[i]; j <= MAX; j++) {  Amount[j] = (Amount[j] + Amount[j - coin[i]]) % MOD;  }  }  int T, N;  cin >> T; // 讀取測試用例數量   while (T--) {  cin >> N; // 讀取當前測試用例的面額  cout <<Amount[N] << endl; // 輸出湊成面額N的方法數  }   return 0;  
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14854.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql之Innodb存儲引擎

1.Innodb數據存儲 innodb如今能夠做到mysql的默認數據存儲引擎&#xff0c;肯定有著其好處的&#xff0c;那么innodb有什么好處呢? 1. 當意外斷電或者重啟&#xff0c; InnoDB 能夠做到奔潰恢復&#xff0c;撤銷沒有提交的數據 2.InnoDB 存儲引擎維護自己的緩沖池&#xff0c…

UDS(ISO 14229)學習筆記

文章目錄 名詞縮寫Vector視頻筆記$10$27Fault Memory物理尋址和功能尋址UDS服務分類0x19服務0x14DTC汽車控制器(ECU)中DTC的狀態位物理尋址和功能尋址單幀 多幀 首幀 連續幀名詞縮寫 DTC Diagnostic Trouble Code FTB Fault Type Byte SID Service Identifier SF Subfunctio…

DML(Data Manipulation Language)數據操作語言

一、增加 insert into -- 寫全所有列名 insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);-- 不寫列名&#xff08;所有列全部添加&#xff09; insert into 表名 values(值1,值2,...值n);-- 插入部分數據 insert into 表名(列名1,列名2) values(值1,值2); 舉…

醫院掛號就診系統的設計與實現

前端使用Vue.js 后端使用SpiringBoot MyBatis 數據使用MySQL 需要項目和論文加企鵝&#xff1a;2583550535 醫院掛號就診系統的設計與實現_嗶哩嗶哩_bilibili 隨著社會的發展&#xff0c;醫療資源分布不均&#xff0c;患者就診難、排隊時間長等問題日益突出&#xff0c;傳統的…

軟考備考三

操作系統 操作系統概述 功能&#xff1a;組織和管理軟件&#xff0c;硬件資源以及計算機系統中的工作流程&#xff0c;控制程序的執行&#xff0c;向用戶提供接口。 分類&#xff1a; 1.批處理操作系統 單道批 多道批&#xff08;宏觀上并行&#xff0c;微觀上串行&#xff09…

Hadoop3:HDFS的Fsimage和Edits文件介紹

一、概念 Fsimage文件&#xff1a;HDFS文件系統元數據的一個永久性的檢查點&#xff0c;其中包含HDFS文件系統的所有目 錄和文件inode的序列化信息。 Edits文件&#xff1a;存放HDFS文件系統的所有更新操作的路徑&#xff0c;文件系統客戶端執行的所有寫操作首先 會被記錄到Ed…

K8s 身份認證和權限

文章目錄 K8s 身份認證和權限認證Service AccountsService Account Admission ControllerToken ControllerService Account Controller 授權(RBAC)RoleClusterRoleRoleBindingClusterRoleBinding K8s 身份認證和權限 Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;…

二叉樹的鏈式結構

1.二叉樹的遍歷 2.二叉樹鏈式結構的實現 3.解決單值二叉樹題 1.二叉樹的遍歷 1.1前序&#xff0c;中序以及后序遍歷 二叉樹的遍歷是按照某種特定的規則&#xff0c;依次對二叉樹的結點進行相應的操作&#xff0c;并且每個結點只操作一次。 二叉樹的遍歷有這些規則&#xff…

主流電商平臺商品實時數據采集API接口||抖音電商數據分析實例|可視化

— 1 — 抖音電商數據【抖音電商API數據采集】分析場景 1. 這里&#xff0c;我們選擇“伊利”這個品牌作為案例進行分析&#xff0c;在短短的4個月里&#xff0c;從最初每月營收17.07萬&#xff0c;到6月份達到了2485.54 萬&#xff0c;伊利的牛奶&#xff0c;有點牛&#xff…

Spring 對 Junit4,Junit5 的支持上的運用

1. Spring 對 Junit4,Junit5 的支持上的運用 文章目錄 1. Spring 對 Junit4,Junit5 的支持上的運用每博一文案2. Spring對Junit4 的支持3. Spring對Junit5的支持4. 總結&#xff1a;5. 最后&#xff1a; 每博一文案 關于理想主義&#xff0c;在知乎上看到一句話&#xff1a;“…

在Windows下訪問WSL(Windows Subsystem for Linux)文件夾

在Windows下訪問WSL&#xff08;Windows Subsystem for Linux&#xff09;文件夾&#xff0c;可以按照以下步驟操作&#xff1a; 通過Windows文件資源管理器訪問&#xff1a; 打開文件資源管理器。在地址欄中輸入\\wsl$&#xff0c;然后按回車鍵。這將打開一個顯示WSL可用發行版…

kafka配置消費者重要參數

文章目錄 fetch.min.bytesfetch.max.wait.msfetch.max.bytesmax.poll.recordsmax.partition.fetch.bytessession.timeout.ms和heartbeat.interval.msmax.poll.interval.msrequest.timeout.msauto.offset.resetenable.auto.commitpartition.assignment.strategy區間(range)輪詢(…

Xline社區會議Call Up|在 CURP 算法中實現聯合共識的安全性

為了更全面地向大家介紹Xline的進展&#xff0c;同時促進Xline社區的發展&#xff0c;我們將于2024年5月31日北京時間11:00 p.m.召開Xline社區會議。 歡迎您屆時登陸zoom觀看直播&#xff0c;或點擊“閱讀原文”鏈接加入會議&#xff1a; 會議號: 832 1086 6737 密碼: 41125…

通過cmd命令行使用用3dmax自帶的vray渲染

有時調試需要使用vray渲染vrscene文件看效果&#xff0c;只裝有3dmax下可以使用自帶vray渲染&#xff0c;在3dmax的渲染日志里面看自帶引擎路徑 使用命令行進入到此目錄 執行命令指定vr文件即可看到效果&#xff0c;如&#xff1a;vray.exe -sceneFile“C:\test15\202405241…

pip安裝報錯解決之后,手動安裝太麻煩,怎么辦

在使用pip install package_name安裝公共庫的時候,經常會報錯: Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。C:\Users\Administrator>pip install hatch WARNING: Ignoring invalid distribution -ip (d:\soft\python\py…

記一次成功的性能調優

環境&#xff1a;mysql8&#xff0c;表A大小10G&#xff0c;dbeaver24.0.5 現象&#xff1a;查詢頁面加載數據慢 操作&#xff1a; 第一步&#xff1a;新建sql編輯器&#xff0c;把sql貼到編輯器&#xff0c;帶參數&#xff1b; 第二步&#xff1a;在sql前加explain空一個并…

Cesium與Three相機同步(2)

之前實現了將Three相機同步到Cesium相機Cesium與Three相機同步(1)-CSDN博客 現在是將Cesium相機同步到Three相機,從而實現了相機雙向同步。 <!DOCTYPE html> <html lang="en"><head><title>three.js webgl - orbit controls</title&g…

【教學類-58-03】黑白三角拼圖03(4*4宮格)總數算不出+隨機抽取10張

背景需求&#xff1a; 【教學類-58-01】黑白三角拼圖01&#xff08;2*2宮格&#xff09;256種-CSDN博客文章瀏覽閱讀318次&#xff0c;點贊10次&#xff0c;收藏12次。【教學類-58-01】黑白三角拼圖01&#xff08;2*2宮格&#xff09;256種https://blog.csdn.net/reasonsummer/…

【Jmeter】使用Jmeter進行接口測試、跨線程組獲取參數

Jmeter接口測試 Jmeter設置成中文實操練習-跨線程組提取參數&#xff0c;使用值HTTP請求默認值&HTTP信息頭管理器 相信打算從事測試工程師的同學們&#xff0c;肯定對Jmeter是耳熟能詳的。使用Jmeter可以進行接口測試、性能測試、壓力測試等等&#xff1b;這個章節介紹如何…

Cisco Catalyst 9000 9200 9300 9400 IOS software upgrade

1 背景 從Catalyst 3650 ,3850&#xff0c;Catalyst 9000開始, 更準確的說是IOS XE的交換機的系統鏡像安裝方式分為2種 ? Bundle mode ? Install mode 這2種方工啥區別&#xff1f; Bundle mode 傳統方式利用boot system flash:c9k.xx16.bin方式引導 Install mode 將bin文…