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 }