#include<stdio.h>intmax(int a, int b){
return (a > b) ? a : b;
}
intknapsack(int W, int wt[], int val[], int n){
int dp[n + 1][W + 1];
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= W; ++j) {
if (i == 0 || j == 0)
dp[i][j] = 0;
elseif (wt[i - 1] <= j)
dp[i][j] = max(val[i - 1] + dp[i - 1][j - wt[i - 1]], dp[i - 1][j]);
else
dp[i][j] = dp[i - 1][j];
}
}
return dp[n][W];
}
intmain(){
int val[] = {40, 50, 60};
int wt[] = {10, 20, 30};
int W = 50;
int n = sizeof(val) / sizeof(val[0]);
printf("Maximum value that can be obtained is %d \n", knapsack(W, wt, val, n));
return0;
}