hdu1709

简单题吧,只要把多项式相乘的原理搞明白了,应该很容易想到思路,可能表达上还略微有点不太顺畅

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int res[255][105];//第一个中括号表示金额,第二个中括号表示硬笔数量,值表示有多少种方法
 5 int tmp[255][105];
 6 int main ()
 7 {
 8     memset(res,0,sizeof(res));
 9     memset(tmp,0,sizeof(tmp));
10     int value[]={0,1,5,10,25,50};
11     int i,j,k,t;
12     for(i=0;i<=100;i++) res[i][i]=1;//初始化第一个表达式
13     for(i=2;i<=5;i++)
14     {
15         for(j=0;j<=250;j++)
16         {
17             for(k=0;k+j<=250;k=k+value[i])
18             {
19                 for(t=0;t+k/value[i]<=100;t++)
20                 {
21                     tmp[j+k][t+k/value[i]]+=res[j][t];
22                 }
23             }
24         }
25         for(j=0;j<=250;j++)
26         {
27             for(t=0;t<=100;t++)
28             {
29                 res[j][t]=tmp[j][t];
30                 tmp[j][t]=0;
31             }
32         }
33     }
34     int ans=0;
35     int money;
36     while(cin>>money)
37     {
38         ans=0;
39         for(t=0;t<=100;t++)
40         {
41             ans=ans+res[money][t];
42         }
43         cout<<ans<<endl;
44     }
45     return 0;
46 }

哦,就这样

转载于:https://www.cnblogs.com/devil-91/archive/2012/08/13/2637097.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值