讨论 / 高手帮忙,不知道哪里错了
libertyair 2011-10-23 03:40:00
点我顶贴 收藏 删除
#include<iostream>

using namespace std;

int m,n,v[26]={0},w[26]={0};

int f[30001]={0};

int main()

{ int i,j,max=0;

cin>>n>>m;

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

cin>>v[i]>>w[i];

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

for(j=n;j>=v[i];j++)

if(v[i]*w[i]+f[j-v[i]]>f[j])

f[j]=v[i]*w[i]+f[j-v[i]];

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

if(max<f[i])

max=f[i];

cout<<max;

return 0;

}

#1 煦风行云@2011-10-23 03:40:00
回复 删除
#include <iostream>

using namespace std;

const int N=20000;

int v[N],w[N];

long d[26][30001];

int n,m;

int maxx(int a,int b)

{

if(a>b)

return a;

else

return b;

}

void xxx()

{

int i,j,k;

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

{

for(j=1;j<=m;j++)

{

if(j-w[i]<0)

d[i][j]=d[i-1][j];

else

d[i][j]=maxx(d[i-1][j],d[i-1][j-w[i]]+v[i]);

}

}

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

{

for(j=1;j<=m;j++)

cout<<d[i][j]<<' ';

cout<<endl;

}*/

cout<<d[n][m];

}

int main ()

{

int i,j;

cin>>m>>n;

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

{

cin>>w[i]>>v[i];

v[i]=w[i]*v[i];

}

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

{

d[i][0]=0;

}

for(i=0;i<=m;i++)

{

d[0][i]=0;

}

xxx();

//system("pause");

return 0;

}

查看更多回复
提交回复