dfs dp 砝碼稱重

2022-04-28 17:24:11 字數 858 閱讀 4939

思路:dfs列舉去掉哪些砝碼, 01揹包求方案數, 各種情況取max記為ans輸出√

邊界情況處理不好交了三遍qaq

dp[j] = dp[j] + dp[j - a[i]] 選上這個砝碼的情況+ 不選的情況

1 #include2 #include3 #include4

using

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