Shadmanman

Untitled

Aug 29th, 2025
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. int knapsackRec(int c,int n){//top down
  2.     if(c==0 or n==0){
  3.       return dp[c][n]=0;  
  4.     }
  5.     if(dp[c][n]!=-1)return dp[c][n];
  6.    
  7.     int taken=0;
  8.    
  9.     int nottaken=0+knapsackRec(c,n-1);
  10.     if(c>=weight[n-1]){
  11.         taken=value[n-1]+knapsackRec(c-weight[n-1],n-1);
  12.     }
  13.     return dp[c][n]=max(taken,nottaken);
  14. }
  15.  
  16. int knapsackIte(int c,int n){//bottom up
  17.     for(int i=1;i<=n;i++){
  18.         for(int cap=0;cap<=c;cap++){
  19.             int nottaken=dp[cap][i-1];
  20.             int taken=0;
  21.             if(cap>=weight[cap-1]){
  22.                 taken=value[i-1]+dp[cap-weight[i-1]][i-1];
  23.             }
  24.             dp[i][cap]=max(taken,nottaken);
  25.         }  
  26.     }
  27.     return dp[c][n];
  28. }
  29. int rodR(int rl,int ind){ // Top down
  30.     if(ind==1){
  31.         return rl*price[ind];
  32.     }
  33.     if(dp[rl][ind]!=-1)return dp[rl][ind];
  34.  
  35.     int nottaken=0+rodR(rl,ind-1);
  36.     int taken=0;
  37.     if(rl>=length[ind]){
  38.         taken=price[ind]+rodR(rl-length[ind],ind);
  39.     }
  40.     return dp[rl][ind]=max(nottaken,taken);
  41. }
  42. void rodIta(int rl){
  43.     vector<int>dp(rl+1,0);
  44.     vector<int>ptable(rl+1,0);
  45.     for(int i=1;i<=rl;i++){
  46.         int mvalue=0;
  47.         for(int j=1;j<=i;j++){
  48.             int taken=price[j]+dp[i-j];
  49.             mvalue=max(mvalue,taken);
  50.         }
  51.         dp[i]=mvalue;
  52.     }
  53.     cout<<dp[rl]<<endl;
  54.     deb(dp);
  55. }
  56. int main(){
  57.     int w=c;
  58.     int i=n;
  59.     while(w>0 and i>0){
  60.         if(dp[w][i]==dp[w][i-1]){
  61.             cout<<"Item "<<i-1<<" wasnt taken\n";
  62.             i--;
  63.         }
  64.         else{
  65.             cout<<"Item "<<i-1<<" was taken\n";
  66.             w-=weight[i-1];
  67.             i--;
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment