Advertisement
_no0B

Untitled

Nov 7th, 2021
702
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. /// iterative dp
  7. int var[1005] , dpp[105][10005];
  8.  
  9. int solve(int cur , int rem) /// cur = index of coin , rem = remaining value to make
  10. {
  11.     if(rem < 0) return 0;
  12.     if(cur > last ){
  13.         if(rem == 0) return 1;
  14.         else return 0;
  15.     }
  16.  
  17.     int ans = solve(cur + 1 , rem) + solve(cur , rem - val[cur]);
  18.     return ans;
  19. }
  20.  
  21. int dpp[2][10005];
  22.  
  23. int main()
  24. {
  25.     int n , k;
  26.  
  27.     dpp[n+1][0] = 1;
  28.     for(int i = 1 ; i <= k ; i++) dpp[n+1][i] = 0;
  29.  
  30.     for(int cur = n ; cur > 0 ; cur--){
  31.         for(int rem = 0 ; rem <= k ; rem++){
  32.             int ans = 0;
  33.             ans = dpp[cur+1][rem];
  34.             if(rem - val[cur] >= 0) ans += dpp[cur][rem - val[cur]];
  35.             dpp[cur][rem] = ans;
  36.         }
  37.     }
  38.  
  39.     /// 0: cur, 1: cur+1
  40.  
  41.     dpp[0][0] = 1;
  42.     for(int i = 1 ; i <= k ; i++) dpp[0][i] = 0;
  43.  
  44.     for(int cur = n ; cur > 0 ; cur--){
  45.         for(int rem = 0 ; rem <= k ; rem++) dpp[1][rem] = dpp[0][rem];
  46.  
  47.         for(int rem = 0 ; rem <= k ; rem++){
  48.             int ans = 0;
  49.             ans = dpp[1][rem];
  50.             if(rem - val[cur] >= 0) ans += dpp[0][rem - val[cur]];
  51.             dpp[0][rem] = ans;
  52.         }
  53.     }
  54.  
  55.     cout<<dpp[0][k];
  56.  
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement