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 }