>Link
ybtoj传球游戏
>解题思路
由题意可以知道一个位置
i
i
i,可以从位置
i
−
1
i-1
i−1和
i
+
1
i+1
i+1接过球
设
f
i
,
j
f_{i,j}
fi,j为第
i
i
i秒时球在
j
j
j手中的方案数
所以
f
i
,
j
=
f
i
−
1
,
j
−
1
+
f
i
−
1
,
j
+
1
f_{i,j}=f_{i-1,j-1}+f_{i-1,j+1}
fi,j=fi−1,j−1+fi−1,j+1
这是一个环,边界特殊处理就行
>代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m, f[50][50];
int main()
{
scanf ("%d%d", &n, &m);
int l, r;
f[0][1] = 1;
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
{
l = (j - 1) > 0 ? (j - 1) : n;
r = (j + 1) <= n ? (j + 1) : 1;
f[i][j] = f[i - 1][l] + f[i - 1][r];
}
printf ("%d", f[m][1]);
return 0;
}