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...