openjudge9267:核电站

描述

一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。

任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数 

输入

只一行,两个正整数N,M( 1 < N < 50,2 ≤ M ≤ 5 )

输出

一个正整数S,表示方案总数。

样例输入

4 3

样例输出

13
题解
比较常见的思路,多开一维存储状态即可。
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 using namespace std;
 5 int n,m;
 6 long long f[105][105];
 7 int main()
 8 {
 9     scanf("%d%d",&n,&m);
10     f[0][0]=1;
11     for(int i=1 ; i<=n ; ++i )
12     {
13         for(int j=1 ; j<m ; ++j)
14         {
15             f[i][j]+=f[i-1][j-1];
16             f[i][0]+=f[i-1][j-1];
17         }
18         f[i][0]+=f[i-1][m-1];
19     }
20     long long ans=0;
21     for(int i=0 ; i<m ; ++i)ans+=f[n][i];
22     printf("%lld",ans);
23     return 0;
24 }


 
原文地址:https://www.cnblogs.com/fujudge/p/7545910.html