Vijos 1232 核电站问题(递推)

题目链接

好久没有 搞递推,这个题在DP专题,其实是赤裸裸的一维的递推,想了好一会啊。F(n)可以由第一个不放F(n-1)加第一个放第二个不放f(n-2)加。。。

F(N) = F(N-1)+F(N-2)...F(N-M)删除中间输出的时候,改错了2次。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 __int64 p[51];
 5 int main()
 6 {
 7     int bi[7];
 8     int i,j,n,m;
 9     bi[0] = 1;
10     for(i = 1;i <= 5;i ++)
11     {
12         bi[i] = 2*bi[i-1];
13     }
14     scanf("%d%d",&n,&m);
15     p[0] = 1;
16     for(i = 1;i <= m-1;i ++)
17     {
18         p[i] = bi[i];
19     }
20     for(i = m;i <= n;i ++)
21     {
22         for(j = 1;j <= m;j ++)
23         {
24             p[i] += p[i-j];
25         }
26     }
27     printf("%I64d\n",p[n]);
28     return 0;
29 }

 

 

posted @ 2012-08-15 20:55  Naix_x  阅读(286)  评论(0编辑  收藏  举报