首页 > 试题广场 >

小游戏

[编程题]小游戏
  • 热度指数:615 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

有一天,小A和小B玩了一个神奇的游戏,游戏开始时,桌面上有a0个不同盒子和b0个不同的物品,每个回合,两个人可以选择增加一个新的盒子或者一个新的物品(所有物品和盒子都不同),记当前桌子上的盒子数量为a,物品数量为b,当把b个物品放入a个盒子的方案数不小于n时,游戏结束,此时最后一位操作者判负。

给出a0b0n,如果小A先手,两个人都采用最优策略,谁能获胜,如果A获胜输出“A”,如果B获胜,输出“B”,如果是平局,输出“A&B”


输入描述:

输入第一行是一个数据组数T(T<=10)。

接下来T行,每行描述一个测试数据,包含三个整数a0,b0,n(1<=a0<=10000,1<=b0<=30,2<=n<=10^9)。分别表示桌子上初始的盒子数,球数和n值。



输出描述:
对于每个测试数据,输出一行,仅包含一个字符串,即“A”,“B”或“A&B”。
示例1

输入

3
2 2 10
3 1 4
1 4 10

输出

B
A
A&B
头像 bandiaoz
发表于 2024-12-26 19:24:47
解题思路 这是一道博弈论问题,主要思路如下: 问题分析: 初始有 个盒子和 个物品 每回合可以增加一个盒子或物品 当 个物品放入 个盒子的方案数 时游戏结束 需要判断先手A和后手B谁能获胜 解决方案: 使用记忆化搜索 状态表示为 对 计算每个状态的胜负情况 考虑特殊情况的优 展开全文
头像 牛客451517860号
发表于 2022-03-22 17:36:59
对答案代码做了注释,只能说,这道题目没有AC才是真正的AC。 #include <iostream> #include <string> #include <map> #include <vector> #include <algorithm&g 展开全文
头像 亲切的秋招侠胖乎乎
发表于 2021-07-03 18:06:49
#include<bits/stdc++.h> using namespace std; int f(int a, int b){     int count1=0;   展开全文