标签:动态规划
Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on sale. During his first visit, the tools are selling variously for $1, $2, and $3. Farmer John has exactly $5 to spend. He can buy 5 tools at $1 each or 1 tool at $3 and an additional 1 tool at $2. Of course, there are other combinations for a total of 5 different ways FJ can spend all his money on tools. Here they are:
1 @ US$3 + 1 @ US$2 1 @ US$3 + 2 @ US$1 1 @ US$2 + 3 @ US$1 2 @ US$2 + 1 @ US$1 5 @ US$1
Write a program than will compute the number of ways FJ can spend N dollars (1 <= N <= 1000) at The Cow Store for tools on sale with a cost of $1..$K (1 <= K <= 100).
A single line with two space-separated integers: N and K.
A single line with a single integer that is the number of unique ways FJ can spend his money.
5 3
5
#include<bits/stdc++.h> using namespace std; const long long inf=1e15; long long num[100]; long long dp[1010][110][10]; void add(int a,int b,int c,int d) //每位存15位数 { long long mx=0; for(int i=0; i<3; i++) { long long z=dp[a][b][i]+dp[c][d][i]+mx; dp[a][b][i]=z%inf; mx=z/inf; } } void print(int a,int b)// { int t=0; for(int i=0; i<3; i++) { num[i]=dp[a][b][i]; //printf("%d %d %d %d\n",a,b,i,dp[a][b][i]); if(dp[a][b][i]!=0) t=i; } for(int i=t; i>=0; i--) { if(i!=t) printf("%015lld",num[i]); else printf("%lld",num[i]); } printf("\n"); } int main() { int n,k; while(~scanf("%d%d",&n,&k)) { memset(dp,0,sizeof(dp)); //printf("*****\n"); for(int i=1; i<=n+1; i++) { dp[i][1][0]=1; int aaa=min(i,k); for(int j=2; j<=aaa; j++) { for(int k=1; k<=j; k++) { if(i-k<k) add(i,j,i-k,i-k); //dp[i][j] = dp[i][j] + dp[i-k][i-k]; else add(i,j,i-k,k); // dp[i][j] = dp[i][j] + dp[i-k][k]; } } } int t=0; for(int i=0; i<3; i++) { num[i]=dp[n+1][k][i]; //printf("%d %d %d %d\n",a,b,i,dp[a][b][i]); if(dp[n+1][k][i]!=0) t=i; } for(int i=t; i>=0; i--) { if(i!=t) printf("%015lld",num[i]);//补零 else printf("%lld",num[i]); } printf("\n"); } }
Dollar Dayz (大数dp fuck!不是多组数据!!)
标签:动态规划
原文地址:http://blog.csdn.net/u012349696/article/details/45216917