nbutoj1482

来源:互联网 发布:澳门网络博客公司 编辑:程序博客网 时间:2024/06/07 10:03
  • [1482] 嘛~付钱吧!

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 大白菜带着套套去超市买好吃的,到了付钱的时候,收银员告诉大白菜需要付N元。

    大白菜突然想知道自己付钱有多少种方法,求助我们聪明的ACMER来告诉他,有几种付钱的方法。

    (已知,我天朝有,红色老人头,绿色老人头,黄色老人头(100,50,20,10,5,1)等等,ps:当大白菜带着套套的时候,他将化身无敌大款,各种老人头要多少有多少);
  • 输入
  • 输入的N都是整数(N<=1000)
  • 输出
  • 对于每个输入,请给出大白菜付钱的方法数
  • 样例输入
  • 1510
  • 样例输出
  • 124
用dp来求方法数

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){int dp[1010],m,i,j,a[6]={1,5,10,20,50,100};while(scanf("%d",&m)>0){memset(dp,0,sizeof(dp));dp[0]=1;if(m==0){printf("0\n");continue;}for(i=0;i<6;i++)for(j=a[i];j<=m;j++)    //完全背包dp[j]+=dp[j-a[i]];  //核心动态转移方程printf("%d\n",dp[m]);}return 0;}


原创粉丝点击