思路:f[j][i]表示第j个人第i次的方案数 则转移方程为f[j][i]=f[j+1][i-1]+f[j-1][i-1] (因为第i次的方案数的上一次从左边同学和右边同学传过来的方案数之和);
由于同学们坐成一个环所以第一个和最后一个同学需要特判。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,m,f[101][101];
int main ()
{
cin>>n>>m;
f[1][0]=1;
for (int i=1;i<=m;i++)
{
for (int j=2;j<=n;j++)
f[j][i]=f[j-1][i-1]+f[j+1][i-1];
f[1][i]=f[2][i-1]+f[n][i-1];
f[n][i]=f[1][i-1]+f[n-1][i-1];
}
cout<<f[1][m];
return 0;
}