一個核電站有N個放核物質的坑,坑排列在一條直線上。如果連續M個坑中放入核物質,則會發生爆炸,於是,在某些坑中可能不放核物質。
任務:對於給定的N和M,求不發生爆炸的放置核物質的方案總數。
輸入文件只一行,兩個正整數N,M( 1<N<50,2≤M≤5)
輸出文件只有一個正整數S,表示方案總數。
4 3
13
( 1<N<50,2≤M≤5)
#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
long long dp[60][10] ;
long long dfs(int x,int y){
long long & t = dp[x][y];
if(t) return t;
if(x==n) return t=1;//已經找到的路線
t = dfs(x+1,0);
if(y+1<m) return t+=dfs(x+1,y+1);
return t;
}
int main(){
scanf("%d%d", &n, &m);
printf("%lld\n",dfs(0,0));
return 0;
}