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

news2024/11/16 13:22:48

目录

目的:

实验内容:

第一题

思路:

【参考代码】

【运行结果】

第二题

输入:

输出:

【参考代码】

【运行结果】


目的:

熟悉并掌握公平组合游戏

(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;
	else
		return 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豆全为1
 			if(temporary == 1)
 				total++;
 			result = result ^ temporary; //一直异或	
		}
		//特判
		if(total == n)
		{
			//当有N堆等于1的石子时,如果所以石子异或的结果为0,则为必胜态。
			//或者是偶数个的时候,先手必胜。
			if(n & 1)
				cout << "Brother" << endl;
			else
				cout << "John" << endl;
		}
		else //正常情况
		{
			if(result) //不为0
				cout << "John" << endl;
			else
				cout << "Brother" << endl;
		}
	}
 	return 0;
}
/*
2
3
3 5 1
1
1
*/

【运行结果】

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

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

相关文章

rs485自动收发电路

R/RO&#xff1a;receive/receive out&#xff0c;接收&#xff0c;连接单片机的 rx D/DI&#xff1a;drive/drive in&#xff0c;驱动&#xff0c;连接单片机的 tx 自动控制电路的目的就是在 tx 空闲&#xff08;空闲为高并&#xff09;时拉低 RE 和 DE&#xff0c;工作&…

B/S模式的web通信

这里写目录标题 目标实现的目标 服务器代码&#xff08;采用epoll实现服务器&#xff09;整体框架main函数init_listen_fd函数&#xff08;负责对lfd初始化的那一系列操作&#xff09;epoll_run函数 一级目录二级目录二级目录二级目录 目标 实现的目标 我们要实现&#xff0c;…

Hive-URL解析函数

Hive-URL解析函数 1.实际工作需求 2.URL的基本组成 3.Hive中的Url解析函数 parse_url函数 parse_url_tuple函数

Nacos Docker 快速部署----解决nacos鉴权漏洞问题

Nacos Docker 快速部署 1. 说明 1.1 官方文档 官方地址 https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html docker启动文件的gitlhub地址 https://github.com/nacos-group/nacos-docker.git 问题&#xff1a; 缺少部分必要配置与说明 1.2 部署最新版本Nacos&…

RS2105XN功能和参数介绍及PDF资料

RS2105XN 品牌: RUNIC(润石) 封装: MSOP-10 开关电路: 单刀双掷(SPDT) 通道数: 2 工作电压: 1.8V~5.5V 导通时间(Tonmax): 50ns RS2105XN是一款模拟开关芯片。以下是RS2105XN的功能和参数介绍&#xff1a; 功能&#xff1a; 2通道单刀双掷&#xff08;SPDT&#xff09;模拟开关…

Android studio 新版本 NewUI toolbar显示快捷按钮

新版本的Android studio 启用新的界面&#xff0c;以前许多快捷按键位置有变化 文章目录 设置始终显示主菜单设置ToolBar快捷按钮显示设置右下角显示分支 设置始终显示主菜单 原本要点击左上角几个横向才显示的菜单 设置始终显示&#xff0c;View -> Appearance -> Mai…

五一超级课堂---Llama3-Tutorial(Llama 3 超级课堂)---第三节llama 3图片理解能力微调(xtuner+llava版)

课程文档&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频&#xff1a; https://space.bilibili.com/3546636263360696/channel/collectiondetail?sid2892740&spm_id_from333.788.0.0 操作平台&#xff1a; https://studio.intern-ai.org.cn/consol…

信号槽机制

目录 信号槽机制 Qt 中的信号 槽函数 槽函数定义 通过代码创建槽函数 通过ui文件创建槽函数 自定义信号 带参数的信号与槽 信号槽断开绑定 信号槽机制 信号和槽机制是 Qt 中一个非常重要的一个机制, 因为有信号和槽机制, 就可以通过某些条件的触发来调用这些槽函数, …

百度地图API 快速入门

一、创建一个应用 创建成功可以在应用程序中查看到自己的ak密钥 二、基本使用 2.1 显示地图 在static下创建demo1.html &#xff08;将密钥换成自己的就可以显示地图了&#xff09; 示例&#xff1a; <!DOCTYPE html> <html> <head><meta name"…

HTML4(四)

1. 框架标签 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>框架标签</title></head><body><!-- 利用iframe嵌入一个普通网页 --><iframe src"https://www.toutia…

FPGA+MCU+SDRAM方案,用于服装厂生产过程中以及设计过程中制作样板,剪裁布料

FPGAMCUSDRAM方案&#xff0c;用于服装厂生产过程中以及设计过程中制作样板&#xff0c;剪裁布料 客户应用&#xff1a;服装厂制衣 主要功能&#xff1a; 1.支持步进电机、直流电机 2.支持同时3轴电机协调工作 3.支持以太网/USB联机控制 4.支持LCD 屏显示状态 5.支持HP11/…

AI大模型探索之路-训练篇18:大语言模型预训练-微调技术之Prompt Tuning

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

mysql安装及基础设置

关系型数据库 MySQL是一种关系型数据库管理系统&#xff0c;采用了关系模型来组织数据的数据库&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;用户通过查询 sql 来检索数据库中的数据。 yum 方式安装 mysql # yum -y install mysql-server # systemctl start my…

2024 全自动ai生成视频MoneyPrinterTurbo源码

只需提供一个视频 主题 或 关键词 &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89208288 更多资源下载&#xff1a;关注我。

OSI网络7层的功能介绍

目录 1.OSI功能介绍 2.SNA 3.X.25 1.OSI功能介绍 2.SNA SNA: IBM Systems Network Architecture)SNA是IBM公司开发的网络体系结构&#xff0c;在IBM公司的主机环境中得到广泛的应用。一般来说&#xff0c;SNA主要是IBM公司的大型机(ES/9000、S/390等)和中型机(AS/400)的主要…

SpringSecurity源码分析(RemeberMe)

RememberMeServices RememberMeServices 记住我的服务的接口 可以重写实现自己的记住我 public interface RememberMeServices { //建议 org. springframework. security. authentication. RememberMeAuthenticationToken 在大多数情况下使用它&#xff0c;因为它具有相应的身份…

物理层——计算机网络学习笔记二

目录 物理层的基本概念 数据通信的基础知识 物理层下面的传输媒体 信道复用技术 图片大部分来源于谢希仁《计算机网络》教材配套的ppt。 这一样都是介绍一下概念性的东西&#xff0c;了解一下就行&#xff0c;就重要性而言不如后面的内容。 物理层的作用&#xff1a;考虑如何才…

AlphaFold 3 可以预测所有生命分子的结构和相互作用

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

酷企秀场景elementUi plus可视化diy

无论网络公司还是政务企业需求的所需的一单可回本的 独立部署集三大功能&#xff1a;电子画册、VR全景、地图秀等功能都可以可视化在线设计 后续免费增加 自定义表单、抽奖活动功能。 源码交付&#xff0c;独立私有化部署&#xff0c;无限多开&#xff0c;可视化设计&#x…

视频剪辑一键处理技巧:批量分割视频,快速提取m3u8视频

随着网络视频的普及和多样化&#xff0c;视频剪辑和处理成为了很多用户的基本需求。在众多的视频处理技巧中&#xff0c;批量分割视频快速提取m3u8视频是常见的操作。本文将介绍如何利用云炫AI智剪一键处理的技巧&#xff0c;轻松完成这些任务&#xff0c;提高视频剪辑的效率。…