UVA 147 Dollars

这个题吧,其实跟那些个硬币问题还是差不多的。但是。。本菜鸟在做的时候因为精度的问题吃到了大苦头了,这个就相当悲剧了。这个问题在代码中有具体的体现。

View Code
 1 #include <iostream>
2 #include <iomanip>
3 using namespace std;
4 int coin[12] = {0,5,10,20,50,100,200,500,1000,2000,5000,10000};
5 long long int a[30001][12];
6 int main()
7 {
8 int i,j,k,cent;
9 double money;
10 for(i = 0;i <= 30000;i++)
11 for(j = 0;j < 12;j++)
12 a[i][j] = 0;
13 a[0][0] = 1;
14 for(i = 0;i <=30000;i++)
15 for(j = 1;j < 12;j++)
16 if(i >= coin[j])
17 for(k = 0;k <= j;k++)
18 a[i][j] += a[i - coin[j]][k];
19 for(i = 1;i <= 30000;i++)
20 for(j = 1;j < 12;j++)
21 a[i][0] += a[i][j];
22 while(cin>>money)
23 {
24 if(money == 0)
25 break;
26 cent = money * 100 + 0.5;
27 cout<<fixed<<setprecision(2)<<setw(6)<<money;
28 cout<<fixed<<setprecision(0)<<setw(17)<<a[cent][0]<<endl;
29 } return 0;
30 }
原文地址:https://www.cnblogs.com/zhexipinnong/p/2431934.html