description
oliver分別有幣值為1,3,5,7,9,13元的硬幣a,b,c,d,e,f枚。一天她去大學生超市買糖吃,糖的**為g元。
問:用oliver僅有的這6種硬幣去恰好購買這g元的糖果,最少需要支付多少個硬幣?(當不能支付時輸出「impossible」)
input
輸入資料有多組(當輸入連續的7個零時,結束。該組資料不做處理)
每組資料依次輸入幣值為1,3,5,7,9,13元的硬幣的個數,以及糖果的**g。
output
輸出資料有多組,每組資料一行,為需要支付的最少硬幣個數。
sample input
1 1 0 0 0 0 10
1 1 1 1 1 1 38
0 0 0 0 0 0 0
sample output
impossible
6題意很簡單,暴力不可以
要用dp揹包
我們可以先想下簡單的01揹包就是倒著來少一層迴圈的,就像這樣
先迴圈容量和價值,這樣就能只放一次,然後就是從大往小背,如果從小往大,那麼乙個東西可能會被多加(就是可重複選擇)
(01揹包求選任意個的最大價值)而這個題目其實就相當於對揹包的數量進行擴充,其實也等於讓他再背硬幣枚數次,當然你也可以把它全加在裡面。#include#include
#include
using
namespace
std;
int vol[1005],price[1005],dp[1005
];int
main()
}cout
; }
}
#include #includeview code#include
using
namespace
std ;
const
int a[8]=,inf=1e9;
int b[8
];int dp[100005
];int
main()
if(dp[m]==inf)printf("
impossible\n");
else printf("
%d\n
",dp[m]);
}return0;
}
分糖果問題 方法一
10個小孩圍成一圈分糖果,老師分給第乙個孩子10塊,第二個小孩2塊,後面依次分的糖果數量為8 22 16 4 10 6 14 20。然後所有的小孩同時將手中的糖果分一半給右邊的小孩,糖果為奇數的可向老師要一塊。問經過幾次後,大家手中的糖果的塊數將一樣多,每個人有多少糖果。這個問題的關鍵在於 所有的小...
分糖果(模擬)
問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...
分糖果問題
問題描述 有不同分數的小孩排隊,怎麼分糖果使得糖果數最小,且分數高的小孩分到盡可能多的糖果。分析 每個小孩至少可分到乙個糖果,且分數不固定,所以分數高的小孩要盡可能的只比旁邊的兩個人分的糖果多,而分數低的要盡可能的少。解題思路 分別從前後進行掃瞄,讓每個小孩都能分到糖果,保證分數高的盡可能多於兩邊的...