9905 砝碼稱重

2021-09-29 18:57:18 字數 903 閱讀 2390

time limit: 10 second

memory limit: 2 mb

問題描述

設有1g,2g,3g,5g,10g,20g的砝碼各若干枚(其總重≦1000g),要求:

a1 a2 a3 a4 a5 a6(表示1g砝碼有a1個,2g砝碼有a2個,......20g砝碼有a6個

total=n(n表示用這些砝碼能稱出不同重量的個數,但不包括乙個砝碼也不用的情況,注意第乙個t是大寫的)

1 1 0 0 0 0
total=3
0 3 2 7 4 5
total=185
【題解】

可以看成6個物品,6個物品的多重揹包問題。

然後按照多重揹包的更新順序,來確定某乙個值是否能達到。

一開始can[0] = true;

然後if (can[j-w[i]*k)

can[j] = true;

因為只要再拿k個i砝碼就能夠組合成j了。

w陣列的1..6的值是固定的就是1,2,3,5,10,20

只要注意更新的順序就可以了,不會很難。

最後從1-1000掃瞄一遍if (can[i]) tot++;

【**】

#include #include const int w[7] = ;

int num[7],tot = 0;

bool can[1010];

void input_data()

void get_ans()

for (int i = 1;i <= 1000;i++)

if (can[i])

tot++;

}void output_ans()

int main()

砝碼稱重 DP

砝碼稱重 問題描述 設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其總重 1000 用他們能稱出的重量的種類數。輸入檔案 a1 a2 a3 a4 a5 a6 表示1g砝碼有a1個,2g砝碼有a2個,20g砝碼有a6個,中間有空格 輸出檔案 total n n表示用這些砝碼能稱出的不同重量...

CodeForces 砝碼稱重

1449 砝碼稱重 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 現在有好多種砝碼,他們的重量是 w0,w1,w2,每種各乙個。問用這些砝碼能不能表示乙個重量為m的東西。樣例解釋 可以將重物和3放到乙個托盤中,9和1放到另外乙個托盤中。input 單組測試資料。...

1449 砝碼稱重

1449 砝碼稱重 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 現在有好多種砝碼,他們的重量是 w0 w1,w2,每種各乙個。問用這些砝碼能不能表示乙個重量為m的東西。樣例解釋 可以將重物和3放到乙個托盤中,9和1放到另外乙個托盤中。in...