码迷,mamicode.com
首页 > 其他好文 > 详细

小A点菜 水题 dp 背包

时间:2016-10-24 09:49:11      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:cstring   其他   ++   main   ffffff   div   span   设置   const   

基本上还是01背包,首先注意必须正好花光钱,所以初始化时除了dp[0]以外其他都要设置成inf,然后因为求方案数,所以基本方程为dp[i] = dp[i-x] + dp[i],再根据inf进行一些特殊处理即得解

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 
 5 const int maxm = 10000 + 500;
 6 const int inf = 0x7fffffff >> 1;
 7 int dp[maxm];
 8 int n, m;
 9 int x;
10 
11 int main () {
12     scanf("%d %d", &n, &m);
13     for (int i = 1; i <= m; i++) dp[i] = inf;
14     dp[0] = 1;
15     for (int i = 1; i <= n; i++) {
16         scanf("%d", &x);
17         for (int j = m; j >= x; j--) {
18             if (dp[j - x] == inf) continue;
19             if (dp[j] == inf) dp[j] = dp[j-x];
20             else dp[j] += dp[j-x];
21         }
22     }
23     if (dp[m] == inf) printf("0");
24     else printf("%d", dp[m]);
25     return 0;
26 }

 

小A点菜 水题 dp 背包

标签:cstring   其他   ++   main   ffffff   div   span   设置   const   

原文地址:http://www.cnblogs.com/CtsNevermore/p/5991736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!