Advertisement
saske_7

light(1232)coin_change_iterative.cpp

Dec 30th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define bound(x,y , i , j) x >= 0 && x < i && y >= 0 && y < j
  6. #define mp make_pair
  7. #define pb push_back
  8. #define pii pair<int , int>
  9. #define M 100000007
  10. #define rep(i , n) for(i = 0 ; i< n ;i++ )
  11. #define repi(i , n ) for(i = 1 ; i<= n ; i++ )
  12. #define mem(x , y ) memset(x , y , sizeof x )
  13. #define mx 101
  14. #define ff first
  15. #define ss second
  16.  
  17. //int dx[] = { -1 ,+1, 0 , 0 , -1 , -1  , 1 , 1 };
  18. //int dy[] = { 0 , 0, +1, -1  , +1 , -1 , 1 , -1 };
  19.  
  20. //int dx[] = { 1 , 1, 2 , 2  , -1 , -1 , -2 , -2 }; // knight direction
  21. //int dy[] = { 2 , -2, +1, -1 ,2 , -2 , 1 , -1 };
  22. int arr[101], dp[101][10001 ];
  23.  
  24. int main()
  25. {
  26.     //freopen("in.txt" ,"r" , stdin );
  27.  
  28.     int i, j, k, cs= 0, tc ;
  29.     scanf("%d ", &tc) ;
  30.  
  31.     while(tc-- )
  32.     {
  33.         int n  ;
  34.         scanf("%d%d",&n,&k );
  35.  
  36.         repi(i, n ) scanf("%d", &arr[i] );
  37.  
  38.         for(i =0 ; i <= k ; i++ )  dp[0][i] =  0;
  39.         for(i = 0 ; i <= n ; i++ )  dp[i][0] = 1 ;
  40.  
  41.         for(i = 1 ; i<= n ; i++)
  42.             for(j = 1; j <= k ; j++ )
  43.             {
  44.                if(j >= arr[i]  )
  45.                 {
  46.                     dp[i][j] = (dp[i-1][j]%M + dp[i][j -  arr[i] ]% M)%M ;
  47.                 }
  48.                 else dp[i][j] =  dp[i-1][j]%M ;
  49.  
  50.             }
  51.         printf("Case %d: %d\n",++cs,dp[n][k ]);
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement