UVA 147 - Dollars(母函数)

题目链接

看着就像赤裸裸的母函数,目测10*30000*30000的复杂度会超吧,试试的打吧,特搞笑的好几个月没打了,哎,啥也忘了。。。找找以前做的题,复习了下。。中间小错误不断,最后竟然AC了。。。本来还想打表的。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 30010
 4 #define eps 0.00000001
 5 long long  p1[N],p2[N];
 6 int main()
 7 {
 8     int a[12] = {5,10,20,50,100,200,500,1000,2000,5000,10000};
 9     int i,j,k;
10     double n;
11     p1[0] = 1;
12     for(i = 0;i <= 10;i ++)
13     {
14         for(j = 0;j <= 30000;j ++)
15         {
16             for(k = 0;;k += a[i])
17             {
18                 if(k+j > 30000) break;
19                 p2[k+j] += p1[j];
20             }
21         }
22         for(j = 0;j <= N;j ++)
23         {
24             p1[j] = p2[j];
25             p2[j] = 0;
26         }
27     }
28     while(scanf("%lf",&n)!=EOF)
29     {
30         if(n == 0) break;
31         k = (int)(n*100+eps);
32         printf("%6.2lf%17lld\n",n,p1[k]);
33     }
34     return 0;
35 }
posted @ 2012-07-19 21:40  Naix_x  阅读(188)  评论(0编辑  收藏  举报