Advertisement
aurko96

Lightoj-1231_coin change dp

Nov 21st, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long n,k;
  4. long long val[1005],coin[1005],dp[500][1005];
  5. long long call(long long paisha,long long sum)
  6. {
  7.     long long ans=0;
  8.     if(sum==k) return 1;
  9.     if(paisha==n) return 0;
  10.     if(dp[paisha][sum]!=-1) return dp[paisha][sum];
  11.     for(int i=0;i<=coin[paisha] && sum+(i*val[paisha])<=k;i++)
  12.     {
  13.         ans+=call(paisha+1,sum+(i*val[paisha]));
  14.         ans=ans%100000007;
  15.     }
  16.     return dp[paisha][sum]=ans;
  17. }
  18. int main()
  19. {
  20.     ios_base::sync_with_stdio(0);
  21.     cin.tie(0);
  22.     long long i,j,x,y,z,t;
  23.     cin>>t;
  24.     for(i=1;i<=t;i++)
  25.     {
  26.         cin>>n>>k;
  27.         for(j=0;j<n;j++) cin>>val[j];
  28.         for(j=0;j<n;j++) cin>>coin[j];
  29.         memset(dp,-1,sizeof(dp));
  30.         x=call(0,0);
  31.         cout<<"Case "<<i<<": "<<x<<"\n";
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement