動態規劃--買書(揹包方案數)
題目大概:
用n元買書,書有10 20 50 100元的。問有多少種買書方案。
思路:
這個題是完全揹包問題的方案數問題,即每一樣物品是可以無限制的拿取的。
狀態h[i]是i元的方案數,這個題和數字組合非常相似。把完全揹包問題變換一下就可以了。
即把完全揹包的兩層迴圈裡的max(h[i],h[i-a[j]])改成h[i]+h[i-a[j]]。
感想:
無。
程式碼:
已整理
#include <iostream> using namespace std; int main() { int n; int a[5]= {0,10,20,50,100},h[1001]= {0}; h[0]=1; cin>>n; for(int i=1; i<=4; i++) for(int j=a[i]; j<=n; j++) { h[j]+=h[j-a[i]]; } cout<<h[n]; return 0; }
相關推薦
動態規劃--買書(揹包方案數)
題目大概: 用n元買書,書有10 20 50 100元的。問有多少種買書方案。 思路: 這個題是完全揹包問題的方案數問題,即每一樣物品是可以無限制的拿取的。 狀態h[i]是i元的方案數,這個題和數字組合非常相似。把完全揹包問題變換一下就可以了。 即把完全揹包的
動態規劃之0-1揹包問題(POJ3624)
有N件物品和一個容積為M的揹包。第i件物品的體積w[i],價值是d[i]。求解將哪些物品裝入揹包可使價值總和最大。每種物品只有一件,可以選擇放或者不放。(N<=3500,M<=130000)。 解題思路: 用F[i][j]表示取前i種物品,使它們總體積不超過j的最優取法取
計蒜客 Transport Ship(ACM-ICPC 2018 焦作賽區網路預賽 K)(多重揹包裝滿的方案數)
There are NN different kinds of transport ships on the port. The i^{th}ith kind of ship can carry the weight of V[i]V[i] and the number of
hdoj2602 0/1揹包 動態規劃 模版題(ava版)
題目連結 這是一道0/1揹包的模版題,比較簡單 import java.util.Arrays; import java.util.Scanner; /* * 01揹包模版題 */ public class Main { public static vo
動態規劃——迴文最小分割數(palindrome-partitioning-ii)
題目: 給定一個字串str,返回把str全部切成迴文子串的最小分割數。 舉例: str="ABA" ,不需要切割,返回0; str="ACDCDCDAD",最少需要切兩次,比如"A","CDCDC"
動態規劃問題——0/1揹包問題(Java實現)
1、問題描述0-1揹包問題: 給定N件物品和一個容量為V的揹包。放入第i件物品耗費的空間為C[i] ,得到的價值是 W[i] 。 問:哪些物品裝入揹包可使價值總和最大?最大是多少?2、基本思路2.1 基本思路 這是最基礎的揹包問題,特點是:每
洛谷P1164 小A點菜(01背包求方案數)
pac clas print can += 題目 但是 轉移 lac P1164 小A點菜 題目背景 uim神犇拿到了uoi的ra(鐳牌)後,立刻拉著基友小A到了一家……餐館,很低端的那種。 uim指著墻上的
P1466 集合 Subset Sums(01背包求填充方案數)
cst ++ color logs 狀態 href clu -- %d 題目鏈接:https://www.luogu.org/problem/show?pid=1466 題目大意:對於從1到N (1 <= N <= 39) 的連續整數集合,能劃分成兩個子集合,
以計算斐波那契數列為例說說動態規劃算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)
ash 麻省理工學院 遞歸樹 經典 top 有關 ctu dynamic 代碼 動態規劃(Dynamic Programming)是求解決策過程(decision process)最優化的數學方法。它的名字和動態沒有關系,是Richard Bellman為了唬人而取的。
Python 統一動態創建多個model對應的modelForm類(type()函數)
strong rgs tro BE ace 後臺 參數 函數 model 一、ModelForm的用法 ModelForm對用戶提交的數據有驗證功能,但比Form要簡單的多 from django.forms import ModelForm # 導入ModelForm
「動態規劃」筆記(一)
直接 表示 hash info 需要 clas 只需要 狀壓 技術 //主要摘抄自參考資料2333 最優性原則&&無後效性 最優子結構 狀態的轉移開銷主要包含兩個方面:每個狀態轉移的狀態數,計算新的狀態的時間. 保證從已經更新的狀態轉移過來 bool? 考慮
【BZOJ3294】放棋子(動態規劃,容斥,組合數學)
ref efi amp 顏色 直接 using .org bzoj mat 【BZOJ3294】放棋子(動態規劃,容斥,組合數學) 題面 BZOJ 洛谷 題解 如果某一行某一列被某一種顏色給占了,那麽在考慮其他行的時候可以直接把這些行和這些列給丟掉。 那麽我們就可以寫出一個
climbing-stairs-動態規劃,爬樓梯的路徑數
can all ase 需要 斐波那契數 bsp eps 算法復雜度 tair You are climbing a stair case. It takes n steps to reach to the top. Each time you can either cli
基於python的動態規劃經典問題(爬樓梯,取珠寶,最大子序列和,找零錢)
1,爬樓梯問題 一個人爬樓梯,每次只能爬1個或兩個臺階,假設有n個臺階,那麼這個人有多少種不同的爬樓梯方法 動態規劃的狀態轉移:第 i 個狀態的方案數和第 i-1, i-2時候的狀態有關,即:dp[i]=dp[i-1]+dp[i-2],dp表示狀態矩陣。 def climb_stai
動態規劃-和為sum的方法數
給定一個有n個正整數的陣列A和一個整數sum,求選擇陣列A中部分數字和為sum的方案數。 當兩種選取方案有一個數字的下標不一樣,我們就認為是不同的組成方案。 輸入描述: 輸入為兩行: 第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)&n
動態規劃-導彈攔截(求最長不上升子序列和最長上升子序列)
lower_bound(a,a+n,i)函式 返回從陣列a到a+n中第一個>=i的元素地址 upper_bound(a,a+n,i)函式 返回從陣列a到a+n中第一個>i的元素地址 #include<cstdio> #include<algorithm> #i
【NOJ1085】【演算法實驗四】【DP_動態規劃】花生米(五)
1086.花生米(五) 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 五一長假第六天,Tom在QQ上遇到了Kitty。呵呵,Kitty,在離散數學課上認識的PPMM……等等!Tom恍然大悟:自己這一生除了看帖不回之外最大的錯誤就是離散數學
【NOJ1084】【演算法實驗四】【DP_動態規劃】花生米(三)
1084.花生米(三) 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 五一長假第三天,Tom和Jerry在倉庫散步的時候又發現了一堆花生米(倉庫,又見倉庫……)。這次Tom制定分花生米規則如下: ???????1、Tom和Je
【NOJ1083】【演算法實驗四】【DP_動態規劃】花生米(二)
1083.花生米(二) 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 五一長假第二天,Tom和Jerry在倉庫散步的時候又發現了一堆花生米(這個倉庫還真奇怪)。這次Tom制定分花生米規則如下: &nbs
利用動態規劃演算法解01揹包問題->二維陣列傳參->cpp記憶體管理->堆和棧的區別->常見的記憶體錯誤及其對策->指標和陣列的區別->32位系統是4G
1、利用動態規劃演算法解01揹包問題 https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 兩層for迴圈,依次考察當前石塊是否能放入揹包。如果能,則考察放入該石塊是否會得到當前揹包尺寸的最優解。 // 01 knap