2 380 200Example Output
30 0Hint
完全背包問題,注意與01背包問題的不同。
| 01 | #include<stdio.h> | 
| 02 | #include<string.h> | 
| 03 | intmax(inta, intb) | 
| 04 | { | 
| 05 |     returna > b? a : b; | 
| 06 | } | 
| 07 | intmain() | 
| 08 | { | 
| 09 |     intT, n, i, j, k; | 
| 10 |     intb[] = {150, 200, 350}; | 
| 11 |     inta[11111]; | 
| 12 |     scanf("%d", &T); | 
| 13 |     for(k = 1; k <= T; k++) | 
| 14 |     { | 
| 15 |         memset(a, 0, sizeof(a)); | 
| 16 |         scanf("%d", &n); | 
| 17 |         for(i = 0; i < 3; i++) | 
| 18 |         { | 
| 19 |             for(j = b[i]; j <= n; j++) | 
| 20 |             { | 
| 21 |                 a[j] = max(a[j], a[j - b[i]] + b[i]); | 
| 22 |             } | 
| 23 |         } | 
| 24 |         printf("%d/n", n - a[n]); | 
| 25 |     } | 
| 26 |     return0; | 
| 27 | } | 
| 28 | 
新聞熱點
疑難解答