Please help me in bottom up 1-0 knapsack problem

#include<bits/stdc++.h>
using namespace std;

int dp[100][200];



dps(int w[],int p[],int c,int n){
for(int i=0;i<n ;i++){
    for(int j=0;j<c;j++){

if(w[n]>c){
    dp[i][j]= dp[i-1][j];

}
else{
 dp[n][c]= max(p[i]+ dp[i-1][j-w[i]], dp[i-1][j]);

}
    }
}

return dp[n][c];
}

int main(){
int n;
cin>>n;
int c;
cin>>c;
int w[n-1],p[n-1];
for(int i=0;i<n;i++){

        cin>>w[i];
    }
   for(int i=0;i<n;i++){

        cin>>p[i];
        }

for(int i=0;i<n+1;i++)
{
    for(int j=0;j<c+1;j++ ){
        if(i==0 || j==0){
            dp[i][j]= 0;
}

}
}
   cout<< dps(w, p,c,n);



return 0;

}
1 Like