题解
2025-12-31 17:03:52
发布于:江苏
0阅读
0回复
0点赞
首先粗暴理解一下题意:
对于每一个人,我们都会有两种传递方式。一种是从左边传过来,还有从右边过来的。
很标准的啊!!
我们要想象一下,这里有一个环,你就是零号。从你出发,每个人都是左右两边各有一个可以给他(小学就学过的标数法总会吧),所以我们可以表示传了次的时候,球在里的次数。
所以很明显,我们需要知道左右两个同学的编号。
我们左边同学就是j-1。右边就是j+1。
如果你就这么写,肯定
so……万一j-1是负数呢?
怎么解决?。
状态转移方程就不写了,一个求和而已。
大部分人最喜欢的环节:
#include <stdio.h>
#include <string.h>
using namespace std;
int dp[31][31];
int main() {
int n, m;
scanf("%d%d", &n, &m);
dp[0][0] = 1;
for (int i = 1; i <= 1; i++) {
for (int j = 0; j < n; j++) {
int left = (j - 1 + n) % n;
int right = (j + 1) % n;
dp[i][j] = dp[i - 1][left] + dp[i - 1][right];
}
}
printf("%d", dp[m][0]);
return 0;
}
这里空空如也


有帮助,赞一个