题目2267:蓝桥杯2016年第七届真题-取球博弈

#include<iostream>

#include<algorithm>

using namespace std;

int n5, vis100022;

int dfs(int x, int f, int s) {

if(visxf%2s%2 != 2) {

return visxf%2s%2;

}

if(x < n1) { // 不能取球了

if((f%2 == 1) && (s%2 == 0)) return 1;

else if((f%2 == 0) && (s%2 == 1)) return -1;

else return 0;

}

int res;

bool ping = false; // 记录是否有平局可能

for(int i = 1; i <= 3; i++) {

if(x - ni >= 0) {

res = dfs(x - ni, s, f + ni);

if(res == -1) { // 对手输,我赢

visxf%2s%2 = 1;

return 1;

}

if(res == 0) { // 有平局可能

ping = true;

}

}

}

if(ping) { // 没有必胜,但有平局

visxf%2s%2 = 0;

return 0;

}

// 所有选择都导致对手赢

visxf%2s%2 = -1;

return -1;

}

int main() {

cin >> n1 >> n2 >> n3;

sort(n+1, n+4);//排序范围是 n1、n2、n3

for(int i = 1; i <= 5; i++) {

int x;

cin >> x;

// 初始化vis数组

for(int j = 0; j <= x; j++) {

visj00 = visj01 = visj10 = visj11 = 2;

}

int ans = dfs(x, 0, 0);

if(ans == 1) cout << "+ ";

else if(ans == 0) cout << "0 ";

else cout << "- ";

}

return 0;

}

相关推荐
阿正的梦工坊17 分钟前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust
烬羽20 分钟前
从零理解树与二叉树:用 JS 带你手撕遍历和递归
javascript·数据结构
YHL30 分钟前
🚀从零理解树与二叉树 —— 概念、实现与遍历
前端·javascript·数据结构
为何创造硅基生物1 小时前
独占指针的创建std::make_unique 本身自带堆出现
c++
JieE2121 小时前
JS 到底有多少种数据类型?从ECMA规范到内存本质,一文彻底搞懂
javascript·数据结构·面试
kyle~1 小时前
ROS 2 与 Isaac Sim 联合仿真(一)体系架构、环境选型与基础通信闭环
c++·机器人·nvidia·仿真·ros2
努力努力再努力wz1 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
八解毒剂2 小时前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
运行时记录2 小时前
别再手动写提示词了 — SkillOpt 让技能文档自己进化
算法
起床困难户5752 小时前
条款20:协助完成返回值优化
c++