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 }

 

 

你可能感兴趣的:(OS)