64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
const int n=5,C=20;
//int selected[21][6];
int main()
{
int find(int s[],int v[]);
int s[n+1]= {0,7,13,6,4,3},v[n+1]= {0,5,7,3,2,3};
int maxValue;
maxValue=find(s,v);
cout<<"maxValue="<<maxValue<<endl;
/*for(int i=1;i<=n;i++)
cout<<selected[C][i]<<' ';*/
system("pause");
return 0;
}
int find(int s[],int v[])
{
int V[n+1][C+1];
int i,j;
for(i=0;i<=n;i++)
V[i][0]=0;
for(j=0;j<=C;j++)
V[0][j]=0;
for(i=1;i<=n;i++)
{
for(j=0;j<=C;j++)
{
V[i][j]=V[i-1][j];
if(s[i] <= j && V[i-1][j] < V[i-1][j-s[i]]+v[i])
{
V[i][j]=V[i-1][j-s[i]]+v[i];
/*if(j==C)
{
selected[j][i]=1;
}*/
}
}
}
return V[n][C];
}