#include<iostream.h>
#include<stdlib.h>
#define min(x,y) ((x>y)?y:x)
const int N=5;
const int V=10;
int value[N+1];
int weight[N+1],x[N+1],m[N+1][V+1];
int knapsack(int V,int N)
{
int jmax=min(weight[N]-1,V);
for(int j=0;j<=jmax;j++)
{ m[N][j]=0;}
for(j=weight[N];j<=V;j++)
{ m[N][j]=value[N]; }
for(int i=N-1;i>=1;i--)
{
jmax=min(weight[i]-1,V);
for( j=0;j<=jmax;j++)
{ m[i][j]=m[i+1][j]; }
for(int j=weight[i];j<=V;j++)
{
if(m[i+1][j]>=(m[i+1][j-weight[i]]+value[i]))
m[i][j]=m[i+1][j];
else
m[i][j]=m[i+1][j-weight[i]]+value[i];
// m[i][j]=max(m[i+1][j],m[i+1][j-weight[i]]+value[i]);
}
}
m[1][V]=m[2][V];
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载