竞赛课第十周(巴什游戏,尼姆博弈)

目录

目的:

实验内容:

第一题

思路:

【参考代码】

【运行结果】

第二题

输入:

输出:

【参考代码】

【运行结果】


目的:

熟悉并掌握公平组合游戏

(1)巴什游戏、尼姆游戏

(2)图游戏、SG函数

(3)威佐夫游戏

实验内容:

第一题

堆里有n颗豆子,有两个玩家(假设一个玩家是电脑)。每个玩家都可以从堆中的n颗豆子中取出1颗,2颗或者3颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后一颗豆子的玩家是赢家。

思路:

写一个人取豆子的函数

帮电脑设计一个算法,实现取豆子的函数

在主程序中进行输流调用,谁最后拿到1粒豆子谁就赢

【参考代码】

#include <bits/stdc++.h>
using namespace std;int n;void humanTakeBeans() //先手
{cout << "human win!!" << endl;
}bool computerTakeBeans()
{if(n % 4 == 0)cout << "computer win!!" << endl;elsereturn true;return false;
}int main()
{cin>>n;if(computerTakeBeans() == true) //玩家先取{humanTakeBeans();}return 0;
}

【运行结果】

第二题

小约翰正在和他的弟弟玩非常有趣的游戏。有一个大盒子里装满了不同颜色的M & M巧克力豆。首先,约翰必须吃几个颜色相同的M & M巧克力豆。然后他的对手必须转身。诸如此类。请注意,每个玩家在他的回合中必须吃至少一个M&M。如果约翰(或他的兄弟)吃了盒子里的最后一个M&M,他将被认为是一个失败者,他将不得不买一个新的糖果盒。 双方都在使用最优博弈策略。约翰总是先开始。您将获得关于M&M的信息,您的任务是确定这样一个游戏的获胜者。

输入

第一行输入将包含一个整数T--测试用例的数量。接下来测试线对将以下列格式描述测试。每个测试的第一行将包含一个整数N,一个盒子中不同M&M颜色的数量。下一行将包含N个整数Ai,由空格分隔第Ai种颜色的M&M数量。

约束条件:
1 <= T <= 474,
1 <= N <= 47,
1 <= Ai <= 4747

输出:

输出测试行,其中每一行都包含有关游戏获胜者的信息。如果约翰将赢得比赛,则打印“约翰”,否则打印“兄弟”。

Sample input:

2

3

3 5 1

1

1

Sample output:

John

Brother

【参考代码】

#include <bits/stdc++.h>
using namespace std;int main()
{int t, n, temporary;cin>>t;while(t--){int total = 0, result = 0;cin>>n;for(int i=0; i<n; i++){cin>>temporary;//判断m豆全为1if(temporary == 1)total++;result = result ^ temporary; //一直异或	}//特判if(total == n){//当有N堆等于1的石子时,如果所以石子异或的结果为0,则为必胜态。//或者是偶数个的时候,先手必胜。if(n & 1)cout << "Brother" << endl;elsecout << "John" << endl;}else //正常情况{if(result) //不为0cout << "John" << endl;elsecout << "Brother" << endl;}}return 0;
}
/*
2
3
3 5 1
1
1
*/

【运行结果】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【源码+文档+调试教程】基于微信小程序的电子购物系统的设计与实现

摘 要 由于APP软件在开发以及运营上面所需成本较高&#xff0c;而用户手机需要安装各种APP软件&#xff0c;因此占用用户过多的手机存储空间&#xff0c;导致用户手机运行缓慢&#xff0c;体验度比较差&#xff0c;进而导致用户会卸载非必要的APP&#xff0c;倒逼管理者必须改…

【数据结构与算法】力扣 226. 翻转二叉树

题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a; root [4,2,7,1,3,6,9] 输出&#xff1a; [4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a; root [2,1,3] 输出&#xff1a; [2,3,1…

应聘项目经理,软考证书会是一个加分项吗?

加分项是必需的&#xff0c;特别是IT行业的项目经理职位。您可以在各大招聘网站上搜索项目经理职位&#xff0c;前景好、薪资高、待遇好的项目经理岗位&#xff0c;基本上都有证书的要求。非IT行业项目经理&#xff0c;可以考虑PMP证书或者其他与专业相关的证书&#xff0c;比如…

低压MOS在多电平逆变器上的应用-REASUNOS瑞森半导体

一、前言 多电平逆变器&#xff0c;是一种新型逆变器。常规逆变器&#xff0c;在单桥臂上采用单个开关器件。多电平逆变器在单桥臂上包含多个串联开关器件&#xff0c;能够精细地控制输出电压。将逆变输出的正弦波进行微分&#xff0c;微分数量越多&#xff0c;越接近正弦波。…

C++ 多态(一)

一、多态定义 同一种操作作用于不同的对象时&#xff0c;可以产生不同的行为。在面向对象编程中&#xff0c;多态性是指通过继承和重写实现的&#xff0c;同一个方法在不同的子类中可以表现出不同的行为。多态性可以提高代码的灵活性和可扩展性&#xff0c;使得程序更易于维护…

Garden Planner for Mac v3.8.62注册激活版:园林绿化设计软件

Garden Planner for Mac是一款专为苹果Mac OS平台设计的园林景观设计软件。这款软件的主要功能是帮助用户设计梦想中的花园&#xff0c;包括安排植物、树木、建筑物和其他物体。 Garden Planner for Mac提供了一个包含1200多种植物和物体符号的库&#xff0c;这些符号都可以进行…

使用QLoRA在自定义数据集上finetuning 大模型 LLAMA3 的数据比对分析

概述: 大型语言模型(LLM)展示了先进的功能和复杂的解决方案,使自然语言处理领域发生了革命性的变化。这些模型经过广泛的文本数据集训练,在文本生成、翻译、摘要和问答等任务中表现出色。尽管LLM具有强大的功能,但它可能并不总是与特定的任务或领域保持一致。 什么是LL…

IO 多路复用 来了(最详细版)

IO多路转接select //为什么要写多进程/多线程的并发服务器&#xff1f; 在进行套接字通信的时候有一些阻塞函数&#xff1a;accept&#xff0c;read、recv&#xff0c;write、send 需要不停的检测客户端链接&#xff0c;需要不停的调用accept&#xff0c;需要占用一个线程或…

VULNCON CTF 2021 -- IPS

前言 这个题目折磨了我接近一天&#xff0c;服气了&#xff0c;题目不算难&#xff0c;但是利用写得的疯掉了~~~ 然后这个题目跟之前的不同&#xff0c;之前的题目都是实现一个内核模块&#xff0c;而这个题目是直接实现了一个系统调用&#xff08;&#xff1a;所以这里不存在…

卷积通用模型的剪枝、蒸馏---蒸馏篇--RKD关系蒸馏(以deeplabv3+为例)

本文使用RKD实现对deeplabv3+模型的蒸馏;与上一篇KD蒸馏的方法有所不同,RKD是对展平层的特征做蒸馏,蒸馏的loss分为二阶的距离损失Distance-wise Loss和三阶的角度损失Angle-wise Loss。 一、RKD简介 RKD算法的核心是以教师模型的多个输出为结构单元,取代传统蒸馏学习中以教…

【通信】为什么用复形式表示信号

引入&#xff1a; 一个实例反映复信号和实信号对应关系&#xff08;幅度与相位&#xff09; 复信号的意义 在实际工程中&#xff0c;没有数学意义上的复数信号。再信号与系统中引入复数是为了&#xff1a; ①简化公式&#xff0c;特别是三角函数 ②复数的实部和虚部实际上代…

VBA技术资料MF152:列出工作表中所有单元格的注释

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

FreeRTOS的任务详解、创建与删除

目录 1、任务详解 1.1 什么是任务&#xff1f; 1.2 任务的特点 1.3 任务的状态 1.4 任务的优先级 1.5 任务的堆和栈 2、任务的创建与删除 2.1 相关API 2.2 函数解析 2.2.1 xTaxkCreate() 2.2.2 xTaskCreateStatic() 2.2.3 vTaskDelete() 3、实战案例 3.1 创建两个…

JavaSwing课程设计-实现一个计算器程序

通过JavaSwing技术来实现计算器小程序&#xff0c;效果如下。 源码下载链接 源码下载 博主承诺真实有效&#xff0c;私信可提供支持

JavaEE 多线程详细讲解(2)

1.线程不安全分析 &#xff08;1&#xff09;线程不安全的主要原因就是&#xff0c;系统的抢占式执行&#xff0c;对于内核设计者来说&#xff0c;这是非常方便的一个执行方式&#xff0c;但是这却却导致线程不安全的问题&#xff0c;也有不抢占执行的系统&#xff0c;但是这种…

存储或读取时转换JSON数据

一、 数据库类型 二、使用Hutool工具 存储时将数据转换为JSON数据 获取时将JSON数据转换为对象 发现问题&#xff1a; 原本数据对象是Address 和 Firend但是转换完成后数据变成了JSONArray和JSONObject 三、自定义TypeHandler继承Mybatis的BaseTypeHandler处理器 package …

STL速查

容器 (Containers) 图解容器 支持随机访问 stringarrayvectordeque支持支持支持支持 string 类 构造函数 string(); ------创建一个空的字符串 例如: string str;string(const char* s); ------使用字符串s初始化string(const string& str); ------拷贝构造 赋值操作…

Android GPU渲染屏幕绘制显示基础概念(1)

Android GPU渲染屏幕绘制显示基础概念&#xff08;1&#xff09; Android中的图像生产者OpenGL&#xff0c;Skia&#xff0c;Vulkan将绘制的数据存放在图像缓冲区中&#xff0c;Android中的图像消费SurfaceFlinger从图像缓冲区将数据取出&#xff0c;进行加工及合成。 Surface…

OpenMVS学习笔记(一):WSL编译安装测试

1.CUDA和CUDNN安装 [1] WSL版本cuda安装&#xff1a; >> wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin >> sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 >> wg…

7个AI驱动的3D模型生成器

老子云AI生成3D模型https://www.laozicloud.com/aiModel 在快速发展的技术世界中&#xff0c;人工智能 (AI) 已经改变了游戏规则&#xff0c;尤其是在 3D 对象生成领域。 AI 驱动的 3D 对象生成器彻底改变了我们创建和可视化 3D 模型的方式&#xff0c;使该过程更加高效、准确…