您的位置:首页 > 其它

joj 1387

2011-11-04 20:32 246 查看
又见0-1背包,长度既是价值也是体积。

#include<iostream>

#include<stdio.h>

using namespace std;

int dp[100000];

int cd[105];

int main()

{

int cd_sto;

while(scanf("%d",&cd_sto)!=EOF)

{

int n;

scanf("%d",&n);

int i,j;

for(i=1;i<=n;i++)

scanf("%d",&cd[i]);

for(i=0;i<cd[1];i++)

dp[i]=0;

for(i=cd[1];i<=cd_sto;i++)

dp[i]=cd[1];

for(i=2;i<=n;i++)

for(j=cd_sto;j>=cd[i];j--)

{

dp[j]=((dp[j-cd[i]]+cd[i])>dp[j])?(dp[j-cd[i]]+cd[i]):dp[j];

//cout<<j<<" "<<dp[j]<<endl;

}

printf("sum:%d\n",dp[cd_sto]);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: