思路:dfs列舉去掉哪些砝碼, 01揹包求方案數, 各種情況取max記為ans輸出√
邊界情況處理不好交了三遍qaq
dp[j] = dp[j] + dp[j - a[i]] 選上這個砝碼的情況+ 不選的情況
1 #include2 #include3 #include4using
namespace
std;
5const
int sz = 2020;6
int n, m, ans = 0, sum = 0;7
intdp[sz], a[sz];
8bool
book[sz];
9void work(int
tot) 18}
19for(int i = 1; i <= tot; i++)
20if(dp[i]) cnt++;
21 ans =max(ans, cnt);22}
23void dfs(int cur, int now)
29 dfs(cur+1
, now);
30 book[cur] = true;//
放棄這個砝碼
31 sum -=a[cur];
32 dfs(cur+1, now+1
);33 book[cur] = false
;34 sum +=a[cur];35}
36int
main()
42 dfs(1, 0
);43 printf("%d"
, ans);
44return0;
45 }
砝碼稱重 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...