POJ 1837 Balance(DP)

本文介绍了一个背包问题的解决方法,通过动态规划的方式实现物品重量与承重限制间的最优匹配。代码使用 C++ 编写,并详细展示了从输入数据到计算最终结果的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

开始看错题了,导致一直没找到节奏,看宝哥题解过的。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <string>
 5 #include <map>
 6 #include <algorithm>
 7 #include <queue>
 8 #include <vector>
 9 using namespace std;
10 #define C 7500  
11 int dp[21][20001];
12 int hook[101],wei[101];
13 int main()
14 {
15     int i,j,k,c,g;
16     scanf("%d%d",&c,&g);
17     for(i = 1;i <= c;i ++)
18     {
19         scanf("%d",&hook[i]);
20     }
21     for(i = 1;i <= g;i ++)
22     {
23         scanf("%d",&wei[i]);
24     }
25     dp[0][C] = 1;
26     for(i = 1;i <= g;i ++)
27     {
28         for(j = 1;j <= c;j ++)
29         {
30             for(k = -7500;k <= 7500;k ++)
31             {
32                 dp[i][k+hook[j]*wei[i]+C] += dp[i-1][k+C];//加C避免出现负数
33             }
34         }
35     }
36     printf("%d\n",dp[g][7500]);
37     return 0;
38 }

 

转载于:https://www.cnblogs.com/naix-x/archive/2013/01/21/2869881.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值