POJ 1276 取款機零錢組合問題 動態規劃

2021-08-26 13:21:50 字數 603 閱讀 5618

本題為多重揹包問題,即每種零錢的個數是有限個,求不超過目標錢數的可以組合出的最大錢數

採用dp的思想,先對目標錢數以內的所有面額做逆向遍歷,初始dp[0] = true,即0元可湊出

在此基礎上如果當前的stat可以湊出,那麼繼續組合出更大的錢數,記下當前有限個零錢和前面的

零錢一起可以湊出的不超過目標錢數的所有合法的值。最後從money逆向列印記下的最大的值即可

source code

problem:1276

user:yangliuacmer

memory:640k

time:516ms

language:c++

result:accepted

#include using namespace std; int main() dp[0] = true; for(i = 0; i < m; i++) } } } for(stat = money; stat >= 0; stat--) } } return 0; }

仿ATM取款機

include include atmoperate.h int cards 5 int pwd 5 int money 5 int flag 5 int i ist int cards 5 int cardid,int n else if cards mid cardid else return ...

模擬ATM取款機

此程式具有查詢餘額,取款,存款功能。模擬atm取款機 2017年4月8日 西安科技大學 汪強 include include include int m 1 控制系統退出 struct user 定義結構體 s void file3 寫餘額 fprintf in,f s.d fclose in vo...

poj1276 多重揹包

題意 取款機的問題 有 n 種錢 每種錢有 v i 的價值 每種錢有 w i 張 問給定要取得錢 cash 之後能從取款機最多取多少錢 理解 多重揹包 直接套模板 遞推式 dp i max dp i dp i mul v i mul v i 其中的值根據 定義 如下 include include ...