uva674:
题意:有1,5,10,25,50这五种硬币。给一个价值,求有多少种组合可以得到该价值。
题解:完全背包
1 #include<cstring> 2 #include<cstdio> 3 #include<algorithm> 4 #include<iostream> 5 using namespace std; 6 int we[6]; 7 int dp[7499]; 8 int main(){ 9 we[1]=1;we[2]=5;we[3]=10;we[4]=25;we[5]=50; 10 int n; 11 12 memset(dp,0,sizeof(dp)); 13 dp[0]=1; 14 for(int i=1;i<=5;i++){ 15 for(int j=0;j<=7499;j++){ 16 if(j>=we[i]) 17 dp[j]+=dp[j-we[i]]; 18 } 19 } 20 while(~scanf("%d",&n)&&n){ 21 printf("%d ",dp[n]); 22 } 23 24 }