题解
2025-06-06 14:31:09
发布于:广东
0阅读
0回复
0点赞
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
// dp[i][j]表示传了i次球后,球在j号同学手中的方案数
int dp[31][31] = {0};
dp[0][1] = 1; // 初始时球在1号同学手中
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
// 计算j号同学的左右同学编号
int left = (j - 2 + n) % n + 1;
int right = j % n + 1;
// 当前方案数等于从左右同学传来的方案数之和
dp[i][j] = dp[i-1][left] + dp[i-1][right];
}
}
cout << dp[m][1] << endl;
return 0;
}
这里空空如也
有帮助,赞一个