Knapsack Problem






SOURCE CODE

#include”iostream.h”
#include”stdio.h”
#include”conio.h”
void knapsack(int n,int w);
int n,i,w,W;
int weight[50],v[50],item[10];
int C[50][50];
void main()
{
clrscr();
cout < < "Enter The Number Of Items: ";
cin > > n;
cout < < "Enter capacity : ";
cin > > W;
cout < < "Enter Weights: ";
for(i=1;i < =n;i++)
cin > > weight[i];
cout < < "Enter Values \n";
for(i=1;i < =n;i++)
{
item[i]=0;
cin > > v[i];
}
knapsack(n,w);
getch();
}

void knapsack(int n,int w)
{
for(int c=0;c < =W;c++)
C[0][c]=0;
for(i=0;i < =n;i++)
C[i][0]=0;
for(i=1;i < =n;i++)
{
for(w=1;w < =n+1;w++)
if(weight[i] < =w)
if(v[i]+C[i-1][w-weight[i]] > C[i-1][w])
{
C[i][w]=v[i]+C[i-1][w-weight[i]];
item[i]=1;
}
else
C[i][w]=C[i-1][w];
else
C[i][w]=C[i-1][w];
}
for(i=0;i < =n;i++)
{
cout < < "\n";
for(w=0;w < =W;w++)
cout < < C[i][w] < < "\t";
}
cout < < "\n";
}