洛谷P1057傳球遊戲
阿新 • • 發佈:2018-12-11
題目大意: 個人圍成圈傳球,球只能左右傳,求傳的球經過次回到第一個人手中的所有情況
輸入輸出樣例 輸入
3 3
輸出
2
思路: 動態規劃,因為球傳到第個人只有從的左邊或者右邊傳,假設球經過次傳到了第個人手中,那個最普通的情況應該有。考慮到個人成環,需對第和個人特殊考慮:
同時還需注意邊界條件,為了保證成立
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
# define N 40
int f[N] [40];
int main(int argc, char** argv) {
int n,m;
scanf("%d%d",&n,&m);
//f[i][k]=f[i-1][k-1]+f[i+1][k-1]
f[1][0]=1;//邊界條件
for(int k=1;k<=m;k++){
//特殊情況
f[1][k]=f[2][k-1]+f[n][k-1];
for(int i=2;i<=n-1;i++)
f[i][k]=f[i-1][k-1]+f[i+1][k-1];
f[n][k]=f[1][k-1]+f[n-1][k-1];
}
printf ("%d\n",f[1][m]);
return 0;
}