HDU 1723 Distribute Message(递推)

题目链接

递推。。先预处理出小于m的,再推起来。

 1 #include <stdio.h>
 2 #include <string.h>
 3 __int64 p[31];
 4 int main()
 5 {
 6     int i,j,n,m;
 7     while(scanf("%d%d",&n,&m)!=EOF)
 8     {
 9         if(n == 0&&m == 0)
10         break;
11         memset(p,0,sizeof(p));
12         p[1] = 1;
13         for(i = 2;i <= m;i ++)
14         {
15             p[i] = 1;
16             for(j = 2;j <= i-1;j ++)
17             {
18                 p[i] += p[j];
19             }
20         }
21         for(i = m+1;i <= n;i ++)
22         {
23             for(j = m;j >= 1;j --)
24             {
25                 p[i] += p[i-j];
26             }
27         }
28         printf("%I64d\n",p[n]);
29     }
30     return 0;
31 }
posted @ 2012-08-21 20:04  Naix_x  阅读(166)  评论(0编辑  收藏  举报