01 Knapsack Program
01 Knapsack Program
#include <stdio.h>
void knapsack()
{
int i, j;
for (i = 0; i <= n; i++)
{
for (j = 0; j <= W; j++)
{
if (i == 0 || j == 0)
V[i][j] = 0;
else if (j < w[i])
V[i][j] = V[i-1][j];
else
V[i][j] = max(V[i-1][j], v[i] + V[i-1][j-w[i]]);
printf("%d\t", V[i][j]);
}
printf("\n");
}
}
void printsolution()
{
int i = n, j = W;
while (i != 0 && j != 0)
{
if (V[i][j] != V[i-1][j])
{
x[i] = 1;
j = j - w[i];
}
else
{
x[i] = 0;
}
i--;
}
}
int main()
{
int i;
printf("Enter number of objects\n");
scanf("%d", &n);
knapsack();
printsolution();
printf("Object\tWeight\tProfit\n");
for (i = 1; i <= n; i++)
{
if (x[i] == 1)
printf("%d\t%d\t%d\n", i, w[i], v[i]);
}
return 0;
}