传送门:传球游戏
思路:用一个二维集合f[i][j]表示传了i次球后在j手上的次数,容易想到f[i][j]=f[i-1][j-1]+f[i-1][j+1],因为是一个圆,所以当j==1或j==n时需要特判。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int ,int>PII;
typedef long long ll;
int ans,sum;
const int N=1010;
int f[N][N];
int n;
int main()
{
int n,m;
cin>>n>>m;
f[0][1]=1;
for(int i=1;i<=m;i++)
for(int j=0;j<=n;j++)
{
if(j==1)
f[i][j]=f[i-1][2]+f[i-1][n];
else if(j==n)
f[i][j]=f[i-1][n-1]+f[i-1][1];
else
f[i][j]=f[i-1][j-1]+f[i-1][j+1];
}
cout<<f[m][1];
return 0;
}