public static void Main()
int[] val = new int[]{50, 60, 100, 120};
int[] wt = new int[]{10, 10, 20, 30};
Console.WriteLine(knapSack(50, wt, val, n));
Console.WriteLine(knapSack(40, wt, val, n));
Console.WriteLine(knapSack(30, wt, val, n));
Console.WriteLine(knapSack(20, wt, val, n));
Console.WriteLine(knapSack(10, wt, val, n));
Console.WriteLine(knapSack(5, wt, val, n));
static int knapSack(int W, int[] wt, int[] val, int n)
int[,] K = new int[n+1,W+1];
K[i,w] = max(val[i-1] + K[i-1,w-wt[i-1]], K[i-1,w]);
static int max(int a, int b) { return (a > b)? a : b; }