| 1 | Initialize base case | 0 | 0 | i==0 or w==0 | 0 | [[0,0,0,0,0,0,0,0]] |
| 2 | Initialize base case | 0 | 1 | i==0 or w==0 | 0 | [[0,0,0,0,0,0,0,0]] |
| 3 | Initialize base case | 1 | 0 | i==0 or w==0 | 0 | [[0,0,0,0,0,0,0,0],[0,_,_,_,_,_,_,_]] |
| 4 | Check if wt[0] <= w | 1 | 1 | wt[0]=1 <= 1 | max(val[0]+dp[0][0], dp[0][1])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,_,_,_,_,_,_]] |
| 5 | Check if wt[0] <= w | 1 | 2 | 1 <= 2 | max(1+dp[0][1], dp[0][2])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,_,_,_,_,_]] |
| 6 | Check if wt[0] <= w | 1 | 3 | 1 <= 3 | max(1+dp[0][2], dp[0][3])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,_,_,_,_]] |
| 7 | Check if wt[0] <= w | 1 | 4 | 1 <= 4 | max(1+dp[0][3], dp[0][4])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,_,_,_]] |
| 8 | Check if wt[0] <= w | 1 | 5 | 1 <= 5 | max(1+dp[0][4], dp[0][5])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,_,_]] |
| 9 | Check if wt[0] <= w | 1 | 6 | 1 <= 6 | max(1+dp[0][5], dp[0][6])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,_]] |
| 10 | Check if wt[0] <= w | 1 | 7 | 1 <= 7 | max(1+dp[0][6], dp[0][7])=max(1+0,0)=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1]] |
| 11 | Check if wt[1] <= w | 2 | 1 | wt[1]=3 <= 1? No | dp[1][1]=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,_,_,_,_,_,_]] |
| 12 | Check if wt[1] <= w | 2 | 2 | 3 <= 2? No | dp[1][2]=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,_,_,_,_,_]] |
| 13 | Check if wt[1] <= w | 2 | 3 | 3 <= 3? Yes | max(val[1]+dp[1][0], dp[1][3])=max(4+0,1)=4 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,_,_,_,_]] |
| 14 | Check if wt[1] <= w | 2 | 4 | 3 <= 4? Yes | max(4+dp[1][1], dp[1][4])=max(4+1,1)=5 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,_,_,_]] |
| 15 | Check if wt[1] <= w | 2 | 5 | 3 <= 5? Yes | max(4+dp[1][2], dp[1][5])=max(4+1,1)=5 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,_,_]] |
| 16 | Check if wt[1] <= w | 2 | 6 | 3 <= 6? Yes | max(4+dp[1][3], dp[1][6])=max(4+1,1)=5 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,_]] |
| 17 | Check if wt[1] <= w | 2 | 7 | 3 <= 7? Yes | max(4+dp[1][4], dp[1][7])=max(4+1,1)=5 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5]] |
| 18 | Check if wt[2] <= w | 3 | 1 | wt[2]=4 <= 1? No | dp[2][1]=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,_,_,_,_,_,_]] |
| 19 | Check if wt[2] <= w | 3 | 2 | 4 <= 2? No | dp[2][2]=1 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,_,_,_,_,_]] |
| 20 | Check if wt[2] <= w | 3 | 3 | 4 <= 3? No | dp[2][3]=4 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,4,_,_,_,_]] |
| 21 | Check if wt[2] <= w | 3 | 4 | 4 <= 4? Yes | max(val[2]+dp[2][0], dp[2][4])=max(5+0,5)=5 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,4,5,_,_,_]] |
| 22 | Check if wt[2] <= w | 3 | 5 | 4 <= 5? Yes | max(5+dp[2][1], dp[2][5])=max(5+1,5)=6 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,4,5,6,_,_]] |
| 23 | Check if wt[2] <= w | 3 | 6 | 4 <= 6? Yes | max(5+dp[2][2], dp[2][6])=max(5+1,5)=6 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,4,5,6,6,_]] |
| 24 | Check if wt[2] <= w | 3 | 7 | 4 <= 7? Yes | max(5+dp[2][3], dp[2][7])=max(5+4,5)=9 | [[0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1],[0,1,1,4,5,5,5,5],[0,1,1,4,5,6,6,9]] |
| 25 | Return final answer | n=3 | W=7 | dp[3][7] | 9 | Final max value is 9 |