您的位置:首页 > 编程语言 > C语言/C++

【poj 1837】Balance 题意&题解&代码(C++)

2016-03-30 07:51 260 查看
题目链接:

http://poj.org/problem?id=1837

题意:

http://blog.csdn.net/lyy289065406/article/details/6648094/

题解:

动态规划,dp[i][j]表示就把前i个物品全部挂上时使天平达到平衡度为j的状态有多少种方案,则dp[i][j+w[i]*c[k]]+=dp[i-1][j] ;

代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int c,g,w[25],a[25],dp[21][15005];
int main()
{
scanf("%d%d",&c,&g);
for (int i=1;i<=c;i++)
scanf("%d",&w[i]);
for (int i=1;i<=g;i++)
scanf("%d",&a[i]);

memset(dp,0,sizeof(dp));
dp[0][7500]=1;

for (int i=1;i<=g;i++)
for (int j=0;j<=15000;j++)
{
if (dp[i-1][j])
for (int k=1;k<=c;k++)
dp[i][j+a[i]*w[k]]+=dp[i-1][j];
}

printf("%d\n",dp[g][7500]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: