深搜+记忆化
2026-10-26 21:36:30
发布于:江苏
7阅读
0回复
0点赞
#include <iostream>
#include <cstring>
using namespace std;
int n, m;
int memo[35][35];
int dfs(int pos, int k)
{
if (k == 0)
return pos == 1 ? 1 : 0;
if (memo[pos][k] != -1)
return memo[pos][k];
int left = pos - 1;
if (left < 1) left = n;
int right = pos + 1;
if (right > n) right = 1;
return memo[pos][k] = dfs(left, k - 1) + dfs(right, k - 1);
}
int main()
{
cin >> n >> m;
memset(memo, -1, sizeof(memo));
cout << dfs(1, m) << endl;
return 0;
}
全部评论 1
2
3天前 来自 浙江
0









有帮助,赞一个