hdu1028(母函数)

母函数原来学过一点,不过现在差不多是忘完了,再次学习,刚开始仍感觉不是那么好理解

 1 #include <stdio.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     int a[121],b[121];
 7     int i,j,k;
 8     while(1)
 9     {
10         scanf("%d",&n);
11         for(i=0;i<=n;i++){a[i]=1;b[i]=0;}
12         for(i=2;i<=n;i++)//第几个多项式
13         {
14             for(j=0;j<=n;j++)//第i个多项式里面的第j个项的指数,这里依次递增
15 
16                 for(k=0;k+j<=n;k=k+i)
17                 {
18                     b[j+k]+=a[j];
19                 }
20 
21 
22 
23             for(j=0;j<=n;j++)
24             {
25                 a[j]=b[j];
26                 b[j]=0;
27             }
28 
29         }
30         printf("%d\n",a[n]);
31     }
32     return 0;
33 }

另外推荐两个人的博客

http://www.matrix67.com/blog/?s=%E6%AF%8D%E5%87%BD%E6%95%B0

http://www.wutianqi.com/?p=596

感觉启发很大

 

令贴一精辟代码,我是没有看懂,请指教

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a[121]={0},i,j,n;
 5     for(i=1,a[0]=1;i<=120;i++)
 6         for(j=0;i+j<=120;j++)
 7             a[i+j]+=a[j];
 8     while(scanf("%d",&n)!=EOF)
 9         printf("%d\n",a[n]);
10         return 0;
11 }

名副其实的短小精悍啊

posted on 2012-08-12 21:21  矮人狙击手!  阅读(186)  评论(0编辑  收藏  举报

导航