题目要求在m次传球之后传到1号位的方案
我们可以定义状态在第i次传球之后在j号位的方案,即dp[i][j]的含义
状态转移方程就是dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1] 即第i次传球之后再j位置上的方案数等于第i-1次传球在j-1和j+1位置上的方案数,注意j=1和j=n的情况要特判

#include <iostream>
using namespace std;
const int maxn = 35;
int dp[maxn][maxn];
int main()
{
    int n, m;
    cin >> n >> m;
    dp[0][1] = 1;
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            if (j == 1)dp[i][j] = dp[i - 1][n] + dp[i - 1][j + 1];
            else if (j == n)dp[i][j] = dp[i - 1][n - 1] + dp[i - 1][1];
            else dp[i][j] += dp[i - 1][j - 1]+dp[i-1][j+1];
            //cout << "dp[" << i << "][" << j << "]=" << dp[i][j] << endl;
        }
    }
    cout << dp[m][1];
}