[ACM_动态规划] 找零种类

问题描述:假设某国的硬币的面值有 1、5、10、50 元四种,输入一个金额 N (正整数,N<=1000),印出符合该金额的硬币组合有多少种。
问题分析: 1、5、10 元组合出 N 元的方法数 = 以 1、5 元组合出 N 元的方法数 + 以 1、5、10 元组合出 N - 10 元的方法数(其他类推)
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 10000
int S[4]={1,5,10,50};
int ways[maxn+1];
int main(){

     memset(ways,0,sizeof(ways));
      ways[0]=1;

      for (int i=0; i<4; i++)
      for (int j=S[i]; j<=maxn; j++){
     ways[j]+=ways[j-S[i]];
      }
      
      for(int n;cin>>n&&n;)
    cout<<ways[n]<<'\n';

      return 0;
}
View Code

 

posted @ 2013-07-27 20:21  beautifulzzzz  阅读(577)  评论(0编辑  收藏  举报