/ Vijos / 讨论 / 采药 /

Help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int max()
{
int a,b;
if (a>b)
return a;
else return b;
}
int main()
{
int v;
int m;
cin>>v;
cin>>m;
int f[1001]={0};
int c[1001]={0};
int w[1001]={0};
for(int i=0;i<m;i++)
{
cin>>c[i];
cin>>w[i];
}
for(int i=0;i<=m;i++)
{
for(int a=v;a>=w[i];a--)
{
f[a]=max(f[a],f[a-c[i]]+w[i]);
}
}
cout<<f[v];
return 0;
}
还有一个
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
int p[1001],w[101];
int t,m,f[1001][101];
memset(f,0,sizeof(f));
memset(w,0,sizeof(w));
memset(p,0,sizeof(p));
cin>>t>>m;
for(int i=1;i<=m;i++)
{
cin>>w[i]>>p[i];
}
for(int i=1;i<=m;i++)
{
for(int j=0;j<=t;j++)
{
f[i][j]=f[i-1][j];
if((j>=w[i])&&((f[i-1][j-w[i]]+p[i])>f[i][j]))
{
f[i][j]=f[i-1][j-w[i]]+p[i];
}
}
}
cout<<f[m][t];
return 0;
}

2 条评论

  • @ 2015-11-08 17:07:18

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int timedp[2000];
    int yao[1500][4];
    int main()
    {
    int n,time;
    scanf("%d%d",&time,&n);
    for(int i=1;i<=n;i++)
    scanf("%d%d",&yao[i][1],&yao[i][2]);
    for(int i=1;i<=n;i++)
    for(int j=time;j>=yao[i][1];j--)
    timedp[j]=max(timedp[j-yao[i][1]]+yao[i][2],timedp[j]);
    cout<<timedp[time];
    }

  • @ 2015-11-08 17:06:07

    这样的排版程序没人看啊

  • 1

信息

ID
1104
难度
4
分类
动态规划 | 背包 点击显示
标签
递交数
16819
已通过
6525
通过率
39%
被复制
37
上传者