POJ 1787 完全揹包,記錄路徑

2021-08-05 21:44:22 字數 1004 閱讀 8271

題意:你有1,5,10,25四種硬幣數量有限,你想買**為p的咖啡,問你能不能購買,要求花的硬幣盡量多,並且輸出每種硬幣花了多少;

思路:看起來像多重揹包加記錄路徑但用完全揹包比較好寫

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxn 33000

#define inf 0x3f3f3f3f

#define lmid l,m,rt<<1

#define rmid m+1,r,rt<<1|1

#define ls rt<<1

#define rs rt<<1|1

#define mod 1000000007

#define i64 __int64

#define limit_ull 100000000000000000

using

namespace

std;

int dp[10005];

int a[10005][4];

int s[4];

int t[4]=;

int main()

if(n==0&&s[0]==0&&s[1]==0&&s[2]==0&&s[3]==0)

break;

dp[0]=0;

for(int i=0;i<4;i++)

for(int j=t[i];j<=n;j++)}}

if(dp[n]==-1)

printf("throw in %d cents, %d nickels, %d dimes, and %d quarters.\n",a[n][0],a[n][1],a[n][2],a[n][3]);

}return

0;}

poj1787 完全揹包 路徑記錄總結

第一次接觸完全揹包,看了別人思路後再寫的。關於本題的揹包問題的幾個總結 1.注意分析全面轉移條件,有時候這個問題會卡住 2.這題的揹包是每個物品有限個,本題中用cnt在轉移條件中限制 3.學會將問題轉化,例如本題一開始想不到用揹包,考慮用搜尋如果真的搜尋的話效率一定低下,但要求是硬幣數最多的組合,就...

POJ1787 完全揹包 物品計數 路徑輸出

題意 有1,5,10,25四種硬幣,給每種硬幣的數量和要組合成的價值,求剛好達到價值時用的硬幣最多,然後還要輸出具體的用的數量 前言 一開始是偶然看見了kuangbin爺的題解說是完全揹包 路徑,很好奇啊。思路 kuangbin爺 orz 乙個完全揹包,加個計數,加個路徑。因為題目要求是求乙個max...

poj 1787 多重揹包(硬幣付款不找錢)

題意 分硬幣,有1,5,10,25四種硬幣,給定每種硬幣的數量,給定要組合成的價值,問剛好達到價值時用的硬幣最多的情況。思路 dp j 表示 j 塊錢最多由多少塊硬幣組成,used j 表示 j 塊錢時,已經放了多少同種類的硬幣。實際上path用一維陣列即可,使得 path j 表示 上一次最多有多...