動態規劃入門-完全揹包(硬幣兌換問題)
C - 完全揹包
在一個國家僅有1分,2分,3分硬幣,將錢N兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。Input每行只有一個正整數N,N小於32768。
Output對應每個輸入,輸出兌換方法數。
Sample Input
2934 12553Sample Output
718831 13137761
Time limit1000 msMemory limit32768 kBOSWindows
思路:動態規劃、遞迴
程式碼如下:
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> using namespace std; /* 初始思路定義一個二維陣列num[i][j]。 其中i代表可以兌換成硬幣的種類, j代表所兌換成的金額,陣列值表示該兌換金額下有多少種兌換方法。 然後利用遞迴將不同兌換金額的兌換方式表達出來。 */ long long num[40000];//因為已知3種硬幣,所以陣列由二維轉變成一維。 int main() { int n; memset(num,0,sizeof(num));//陣列初始化。注意不可為1. num[0]=1; for(int i=1;i<=3;i++) { for(int j=i;j<40000;j++) num[j]+=num[j-i];//遞迴思路 } while(~scanf("%d",&n)) { printf("%I64d\n",num[n]); } return 0; }
相關推薦
動態規劃入門-完全揹包(硬幣兌換問題)
C - 完全揹包在一個國家僅有1分,2分,3分硬幣,將錢N兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。Input每行只有一個正整數N,N小於32768。Output對應每個輸入,輸出兌換方法數。Sample Input2934 12553Sample Outp
動態規劃之完全揹包問題(java實現)
之前寫了01揹包問題,現在寫完全揹包問題。和01揹包不同的是,完全揹包不限定某種物品的件數,可以裝0,1,2,...,而01揹包只有裝與不裝的區別。但是思考問題的方式還是一樣的,我就其中的最大值。詳細程式碼和註釋見下面程式碼。 package backpack; /* f[i][v]:前i件物
再學動態規劃之 完全揹包
暴力搜尋 考慮當前index 拿1張,2張,…時候,從index+1開始的最小張數。相加即可: import sys class Solution(object): def get_smal
動態規劃之完全揹包問題杭電1114
#include <bits/stdc++.h> using namespace std; #define INF 0x7fffffff #define maxn 10010 int main(){ int dp[maxn],w[maxn],p[maxn]; int e,n,f,i,R,j
【動態規劃——盜版無限揹包(有個數限制)】coin——金幣
題目講解: 用一個數組f[i]表示i的價格是否能達到 f[0]=1,表示價格為0可以到達,賦初值 後用s[i][j]表示到達i的價格用的第j個錢幾個 用無限揹包的方法加一句判斷s[i][j]<j所能用的最大個數 (無限揹包不會的話看程式後的講解) #in
動態規劃入門——多重揹包與單調優化
本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 今天是演算法與資料結構的第14篇文章,也是動態規劃專題的第三篇。 在之前的文章當中,我們介紹了多重揹包的二進位制拆分的解法。在大多數情況下,這種解法已經足夠了,但是如果碰到極端的出題人可能還是會被卡時間。這個時候只能用更加快速的方法,也
經典動態規劃:完全揹包問題
讀完本文,你可以去力扣拿下如下題目: [518.零錢兌換II](https://leetcode-cn.com/problems/coin-change-2) **-----------** 零錢兌換 2 是另一種典型揹包問題的變體,我們前文已經講了 [經典動態規劃:0-1 揹包問題](https://
動態規劃-狀壓DP(炮兵陣地)
我軍 如何 tro 輸入 可見 php 正整數 接下來 一個 P2704 炮兵陣地 題目描述司令部的將軍們打算在NM的網格地圖上部署他們的炮兵部隊。一個NM的地圖由N行M列組成,地圖的每一格可能是山地(用“H” 表示),也可能是平原(用&ldquo
動態規劃演算法學習總結(帶案例)
【動規演算法學習總結】 首先,遇到動態規劃問題要找到三個重要元素: 1.最優子結構 2.邊界 3.狀態轉移方程 【最優子結構】 通俗來說,就是具有規律性的結果的獲取方式。 如上樓梯問題
【動態規劃】機器分配 (ssl 1639)
機 器 分 配
【動態規劃】石子合併 (ssl 2863)
石 子 合 並
【動態規劃】大廳安排 (ssl 1212)
大 廳 安 排
【動態規劃】拔河比賽 (ssl 1638)
拔 河 比 賽
動態規劃——DP算法(Dynamic Programing)
最優 n) 每次 for 利用 列表 自底向上 python bubuko 一、斐波那契數列(遞歸VS動態規劃) 1、斐波那契數列——遞歸實現(python語言)——自頂向下 遞歸調用是非常耗費內存的,程序雖然簡潔可是
01揹包 ,完全揹包,多重揹包 dp (動態規劃入門dp)
dp 動態規劃,確實難啃, 光 最簡單的 揹包問題,就 費老大勁. 思想! 思想! 思想! 類似於遞推, 區域性找 關係. 揹包問題, 就兩種狀態 放還是不放? 其實關於揹包放不放的
動態規劃入門——詳解完全揹包與多重揹包問題
本文始發於個人公眾號:TechFlow,原創不易,求個關注 今天是演算法資料結構專題的第13篇文章,也是動態規劃專題的第二篇。 上一講當中我們一起學習了動態規劃演算法中的零一揹包問題,我們知道了所謂的零一揹包是指每一種物品只有一個,所以它的狀態只有0和1兩種,即拿或者不拿。而今天我們要來討論物品不止有一個的
動態規劃入門(一)
spa turn color and uil ott c++ erro 大數字 2017-09-01 11:29:43 writer:pprp 看sprout臺灣大學acm教學視頻的第一部分: 裏邊涉及到四道小例題 感覺很好就拿來寫了寫: 題意還有代碼說明都在代碼中: 1、
硬幣找零--動態規劃入門
假設有幾種硬幣,如1、3、5,並且數量無限。請找出能夠組成某個數目的找零所使用最少的硬幣數。 #include<iostream> #include<math.h> #define INF 9999999 using namespace std; int m
動態規劃入門-(差不多一半借鑑左神)
其實從嚴格意義上說,動態規劃,並不是一種演算法,而是一種程式設計技巧,除去無關運算,降低時間複雜度。 舉個例子: 經典例子1-階乘: 遞迴實現:fac(x)=x*fac(x-1),臨界條件為x==0時,返回1。 以x==4時,解空間樹: 遞迴時由上往下延展,解問題時從
Vijos P1133 裝箱問題(動態規劃,01揹包,NOIP)
noip2001普及組第四題 樣例分析 輸入容積24,6件物品 因為容量最多可達20000,為節省空間,只用一維陣列,用f[j]表示在容積為j時所裝物品所佔用的最大體積 對每一件物品,有放或不放兩種策略,不放,則體積仍為之前的f[j];放,則須留有足夠的空間,並佔用一定的體積,即f[j-v]+v 為了保