[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

 

你可能感兴趣的:(动态规划)