#include <iostream>
#include <cstring>
using namespace std;
const int N = 1010;
int f[N], a, b;
int dfs(int x)
{
if(f[x] != -1) return f[x];
for(int i = 1; i <= b; i ++)
{
if(x - i >= 0 && dfs(x - i) == 0)
{
return f[x] = 1;
}
}
return f[x] = 0;
}
int main()
{
int n; cin >> n;
while(n --)
{
scanf("%d %d", &a, &b);
memset(f, -1, sizeof f);
if(dfs(a) == 1) printf("first\n");
else printf("second\n");
}
return 0;
}
HDU 1846 (SG函数 +记忆化搜索)
最新推荐文章于 2021-02-27 23:02:06 发布
本文介绍了一种使用递归动态规划解决游戏策略问题的方法,通过预计算子问题的解决方案来决定先手或后手玩家是否能赢得游戏。具体实现包括了初始化状态数组,定义递归函数进行深度优先搜索,并通过备忘录技术避免重复计算。
&spm=1001.2101.3001.5002&articleId=104724254&d=1&t=3&u=c1c70ea86d3b42a48150fbb0db5907fc)
406

被折叠的 条评论
为什么被折叠?



