4702 分糖果系列一

2022-02-27 15:43:05 字數 1265 閱讀 9458

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 #include 

#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;

}

view code

分糖果問題 方法一

10個小孩圍成一圈分糖果,老師分給第乙個孩子10塊,第二個小孩2塊,後面依次分的糖果數量為8 22 16 4 10 6 14 20。然後所有的小孩同時將手中的糖果分一半給右邊的小孩,糖果為奇數的可向老師要一塊。問經過幾次後,大家手中的糖果的塊數將一樣多,每個人有多少糖果。這個問題的關鍵在於 所有的小...

分糖果(模擬)

問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...

分糖果問題

問題描述 有不同分數的小孩排隊,怎麼分糖果使得糖果數最小,且分數高的小孩分到盡可能多的糖果。分析 每個小孩至少可分到乙個糖果,且分數不固定,所以分數高的小孩要盡可能的只比旁邊的兩個人分的糖果多,而分數低的要盡可能的少。解題思路 分別從前後進行掃瞄,讓每個小孩都能分到糖果,保證分數高的盡可能多於兩邊的...