版权声明:原创博客 喜欢拿走 https://blog.csdn.net/qq_43004519/article/details/84447578
/*
本题的核心思想即是dp[m][0](传递m次到第0个人的方法数)=dp[m-1][1]+dp[m-1][n-1]
*/
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,m;
int dp[31][30];//dp[m][0]表示传递m次到第0个人手里的方法数
memset(dp,0,sizeof(dp));
dp[0][0]=1;
cin>>n>>m;
for(int i=1;i<=m;i++){//外层传递次数的循环
for(int j=0;j<n;j++){//内层为人的循环
dp[i][j]=dp[i-1][(j+1)%n]+dp[i-1][(j-1+n)%n];
}
}
cout<<dp[m][0]<<endl;
return 0;//give me five
}