You are on page 1of 3

#include<stdio.

h>
#include<conio.h>
//void knapsack(int,int);
int n,i,j,C,stack=0;
int w[50],v[55];
int value[55][55];
//int stack(int);
//void display(int,int);
void main()
{
void display(int,int);
clrscr();
printf("\n Knapsack");
printf("\n***********");
printf("\n enter the no of items:");
scanf("%d",&n);
printf("\n enter the capacity:");
scanf("%d",&C);
printf("\n enter the weight:");
for(i=0;i<n;i++)
{
printf("\n enter the %d weight:",i+1);
scanf("%d",&w[i]);
}
printf("\n enter the value:");
for(i=0;i<n;i++)
{
printf("\n enter the %d value:\t",i+1);
scanf("%d",&v[i]);
}
for(i=0;i<=n;i++)
{
//1
for(j=0;j<=C;j++)
{
//2
if(i==0||j==0)
{
value[i][j]=0;
}
else
{ //3
if(j-w[i]>=0)
{
//4
if(value[i-1][j]>(v[i]+value[i-1][j-w[i]]))
value[i][j]=value[i-1][j];
else
value[i][j]=v[i]+value[i-1][j-w[i]];

//40

else
value[i][j]=value[i-1][j];
}
//30
//end else
}//20
}//10
display(n,C);
if(stack<C)
{ //1
for(i=n;i>0;i--)
{ //2
for(j=C;j>0;j--)
{ //3
if(value[i,j]==value[i-1,j])
{ //4
printf("\n equal\n");
n=n-2;
C=C-w[3];
stack=C;
display(n,C);
}//40
else
{ //5
n=n-1;
C=C-w[i];
stack=C;
}
}//50
}
}
else
{
printf("\n Stack is Full");
}
getch();
}
void display(int n,int C)
{
for(i=0;i<=C;i++)
{
printf("\t %d",i);
}

for(i=0;i<=n;i++)
{
printf("\n \t");
printf("\t%d",i);
for(j=0;j<=C;j++)
{
printf("\t%d",value[i][j]);
}
printf("\n");
}
printf("\n The values %d",value[n][C]);
}

You might also like