实验——田忌赛马c++

2023-11-02

故事概述:
孙膑先以下等马对齐威王的上等马,第一局田忌输了。接着进行第二场比赛。孙膑拿上等马对齐威王的中等马,获胜了一局。 第三局比赛,孙膑拿中等马对齐威王的下等马,又战胜了一局。 比赛的结果是三局两胜,田忌赢了齐威王。 还是同样的马匹,由于调换一下比赛的出场顺序,就得到转败为胜的结果。

问题描述
如果3匹马变成n匹(n<=100),齐王仍然让他的马按照优到劣的顺序初赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子;输一局,田忌就要输掉200两银子。已知道国王和田忌的所有马的奔跑速度,并且所有马的奔跑速度均不相同,现已经对两人的马分别从快到慢排好序。请设计一个算法,帮助田忌赢得最多的银子。
要求
输入:第一行一个整数n,表示双方各有n匹马;
第二行n个整数分别表示田忌的n匹马的速度;
第三行n个整数分别表示齐王的n匹马的速度。
输出:若通过聪明的你精心安排,如果能赢得比赛(赢的次数大于比赛总次数的一半),那么输出“YES”。 否则输出“NO”。并输出一个整数,代表田忌最多能赢多少两黄金。
分析:

贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择,就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解

  • 如果田忌最快的马比齐王最快的马快,则比之

  • 如果田忌最快的马比齐王最快的马慢,则用田最慢的马跟齐最快的马比 //这是贪心的第一步

  • 如果田忌最快的马的速度与齐威王最快的马速度相等

    • 如果田忌最慢的比齐威王最慢的快,则比之
      //这是贪心的第二步
    • 如果田忌最慢的比齐威王最慢的慢,田忌慢VS齐王快
    • 田忌最慢的与齐威王最慢的相等,田忌慢VS齐王快

    代码(C++):

#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1005;
int a[maxn];      //田忌的马的速度
int b[maxn];	 //齐王的马的速度
bool cmp(const int &a, const int &b) {             //先将田忌跟齐王的马的速度数组进行一次冒泡排序
	return a>b;
}

int main() {
	int n;       //双方各有的马匹数(同为n)
	while (cin >> n && n) {
		for (int i = 1; i <= n; i++)       //数组赋值
			cin >> a[i];
		for (int i = 1; i <= n; i++)			//数组赋值
			cin >> b[i];
		sort(a + 1, a + n + 1, cmp);
		sort(b + 1, b + n + 1, cmp);
		int sa = 1, ea = n;
		int sb = 1, eb = n;
		int ans = 0;
		while (sa <= ea && sb <= eb) {
			if (a[sa]>b[sb]) {
				ans++;
				sa++;
				sb++;
			}
			else if (a[sa]<b[sb]) {
				ans--;
				ea--;
				sb++;
			}
			else {
				if (a[ea]>b[eb]) {
					ans++;
					ea--;
					eb--;
				}
				else if (a[ea]<b[eb]) {
					ans--;
					ea--;
					sb++;
				}
				else {
					if (a[ea]<b[sb]) {
						ans--;
					}
					ea--;
					sb++;
				}
			}

		}

		if (ans>0)
		{
			cout << "YES" << endl;
			cout << "田忌赢了" << endl;
			cout << "获得了" << ans * 200 << "银两" << endl;
		}

		else if (ans<0)
		{
			cout << "NO" << endl;
			cout << "田忌输了" << endl;
			cout << "输了" << ans * 200 << "银两" << endl;
		}
		else
			cout << "田忌与齐王打平" << endl;
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验——田忌赛马c++ 的相关文章

  • Python2.7.X的安装

    感谢关注的同志 今天写一下Python2 7 X的安装 与大家分享 1 官网下载 在python官网下载https www python org downloads 我这里下载的是Python 2 7 15 https download c
  • 汇尔M1折腾记

    汇尔M1原价挺贵的 现在淘宝11块钱 所以买了几个 带近4000毫安电池 可当充电宝 usb口支持3G上网卡分享 一个可移动的路由器 好像厂家倒闭了 其他功能基本与普通路由器一致 使用了openwrt系统 我也不知道这个是啥 好像是个路由器
  • make 时遇到 /usr/bin/ld: cannot find -lstdc++

    在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息 usr bin ld cannot find lxxx 这些问题都是因为找不到相应的lib文件 其中xxx即表示函式库文件名称 如 libc so li
  • STM32 进阶教程 15 - 串口DMA收发

    前言 串口操作相信大家一定很熟悉 如果你已经会串口的收发数据 并可以灵活使用轮询及中断方式对串口进行数据收发 那么恭喜你 学完本节内容后 也将可以学会串口的更高级操作方式 DMA方式 DMA操作串口可以大大减轻MCU的负担 同时也可以加快数
  • C++ stdlib.h

    stdlib 头文件即standard library标准库头文件 stdlib 头文件里包含了C C 语言的最常用的系统函数 该文件包含了的C语言标准库函数的定义 stdlib h里面定义了五种类型 一些宏和通用工具函数 类型例如size
  • 利用Python爬虫,查询12306车次信息

    效果展示 分析目标网站 进入12306官网 以商丘南到汝州为例 在点击查询后会跳转到查询结果的网站 右键点检查或审查元素 在弹出的控制台中点网络或network 如果没有显示数据的话 刷新一下网页就有了 在点击Fetch XHR后会发现有一
  • 62、shell转义,单引号与双引号,反撇号

    1 转义 单引号和双引号都能关闭shell对特殊字符的处理 不同的是 双引号没有单引号严格 单引号关闭所有有特殊作用的字符 而双引号只要求shell忽略大多数 具体的说 就是 美元符号 反撇号 反斜杠 这3种特殊字符不被忽略 不忽略美元符号
  • [Pytorch系列-69]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - test.py代码详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 Pytorch系列 66 生成对抗网络GAN 图像生成开源项目pytorch CycleGAN and pix2pix pix2pix te
  • pycharm remote 远程项目 同步 本地_工具篇-vscode sftp代码同步

    之前有一篇写过pycharm远程访问服务器 这里还写vscode的一个类似功能理由有两个 vscode相比于pycharm占用的内存要小 vscode远程访问不要钱 而pycharm必须要付费的专业版才拥有这个功能 但是vscode也有不好
  • WPF界面设计—撸大师

    WPF界面设计 模仿了金山卫士 360 鲁大师的界面
  • keepalived 笔记

    keepalived可以认为是VRRP协议在Linux上的实现 主要有三个模块 分别是core check和vrrp core模块为keepalived的核心 负责主进程的启动 维护以及全局配置文件的加载和解析 check负责健康检查 包括
  • STM32CubeMX系列教程

    微雪课堂 STM32CubeMX系列教程 https www waveshare net study portal php mod list catid 40 page 1
  • 如何保护自己知识产权,建立代码护城河——建立自己的静态库,x86和arm平台的实例讲解

    前言 1 想象一下 假如我们幸幸苦苦写了一个封装库代码 为了建立护城河 我们企业不愿意把真实的代码提供给用户 怕客户拿了代码 这个合同结束 稍微改一点点 就盗用我们的技术 然后说全自主创新 那真是有苦说不出啊 2 但是呢 你不把自己的代码给
  • 2023华为OD机试真题【分苹果/位运算】

    题目内容 A B两个人把苹果分为两堆 A希望按照他的计算规则等分苹果 他的计算规则是按照二进制加法计算 并且不计算进位 12 5 9 1100 0101 9 B的计算规则是十进制加法 包括正常进位 B希望在满足A的情况下获取苹果重量最多 输
  • 信号调理方式(放大、滤波、隔离、调制解调等)

    0 信号调理 百度百科 信号调理简单的说就是指将敏感元件检测到的各种信号转换为标准信号 数字量输入通道中的信号调理主要包括消抖 滤波 保护 电平转换 隔离等 1 一 目 的 将敏感元件检测到的各种信号转换为标准信号 二 方 式 放大电路 滤
  • gdb调试步骤

    gdb调试 Gdb调试过程 1 程序经过预处理后 即进入编译阶段 进入编译阶段 首先声明编译 2 格式 gdb o test test c g 3 进入编译 gdb test 4 显示需要编译调试的源程序 l list list filen
  • Python 基于openpyxl的表格数据处理 举例为统计身高数据

    基于openpyxl的表格数据处理 注意事项 将data html文件放到py文件同级目录下使用相对路径 或使用绝对路径 data xlsx群里有 没找到可以私聊我 注意事项 如果不确定自己的操作是否影响源数据 请在代码最后保存语句中换成其
  • 大数据基础——Linux常用命令

    一个优秀的操作系统 Linux Linux 内核最初只是由芬兰人林纳斯 托瓦兹 Linus Torvalds 在赫尔辛基大学上学时出于个人爱好而编写的 Linux 是一套免费使用和自由传播的类 Unix 操作系统 是一个基于 POSIX 和
  • 初级JS

    JS中实现一个简单日历
  • 贴片电容介质X5R与X7R之间的区别

    X5R X7R类介质贴片电容是在工业中广泛使用的一种温度稳定型电容器 属于II类介质材料 具有中等介电常数 在使用温度 55 125 85 范围内容值变化率在 15 以内 容值老化率为1 说了这么多都是几乎相同的材料 那么这两种材料的不同到

随机推荐

  • 解决nodejs中json序列化时Date类型默认为UTC格式的问题

    在nodejs中 json序列化时Date类型时 默认转为UTC格式 如下图 zhupengfei DESKTOP HJASOE3 MINGW64 d MyProject exp2 node gt new Date 2018 04 24T1
  • Vue3 :Pinia入门

    Vue3 Pinia入门 Date May 11 2023 Sum Pinia概念 实现counter getters 异步action storeToRefs保持响应式解构 什么是Pinia Pinia 是 Vue 的专属状态管理库 可以
  • 什么是第二人称,第二人称在游戏的表现

    油管up Nick Robinson 做过介绍 第一人是玩家角色自身 第二人是游戏内的其他角色 第三人是独立于游戏的观察者 所以说 第一人称视角来自玩家角色自身 玩家看到视角的和现实的视角一致 第三人称视角来自一个独立于游戏世界的第三方观察
  • Doris之rollup上卷及物化视图

    Rollup上卷 通过建表语句创建出来的表称为 Base 表 Base Table 基表 在 Base 表之上 我们可以创建任意多个 ROLLUP 表 这些 ROLLUP 的数据是基于 Base 表产生的 并且在物理上是独立存储的 Roll
  • Redhat Enterprise Linux 9安装配置图解教程

    2022 年 5 月 18 日 IBM 收购的红帽公司宣布推出红帽企业 Linux 9 RHEL 9 这是世界领先的企业 Linux 平台的最新版本 RHEL 9 为支持混合云创新提供了更灵活 更稳定的基础 并为跨物理 虚拟 私有和公共云和
  • workman 日志_workerman

    下载 手册参考 http doc3 workerman net 一 WorkerMan代码规范 1 类采用首字母大写的驼峰式命名 类文件名称必须与文件内部类名相同 以便自动加载 2 使用命名空间 命名空间名字与目录路径对应 并以开发者的项目
  • Java架构直通车——Redis的PF实现原理:HyperLogLog

    文章目录 引入 什么是基数统计 基数统计的常用方法 HyperLogLog原理 再近一步 分桶平均 更近一步 真实的HyperLogLog 引入 之前的文章Java架构直通车 点赞功能用Mysql还是Redis 一文中 我们介绍了分别从my
  • Java处理Excel

    1 引言 Excel是我们平时工作中比较常用的用于存储二维表数据的 Java中有两种常用的方法操作Excel jxl和poi 其中 在小数据量时jxl快于poi 在大数据量时poi要快于jxl 但差距都不明显 本文使用poi进行处理Exce
  • thinkPHP6.0入门笔记(四)——删除和修改用户信息

    thinkPHP6 0实现删除和修改用户信息 1 删除用户信息 2 优化bootstrap资源引入方式 3 浏览器的cookie与session机制 4 token令牌原理 5 利用token防止表单重复提交 6 同步表单数据库修改 参考文
  • 盘点国内10家互联网AI大模型

    ChatGPT在国内掀起热潮后 中国的生成式AI技术也迎来了蓬勃发展 中国国产AI模型的前景非常广阔 尤其是在中国国家战略的推动下 人工智能领域正在迅速发展 中国的公司和研究机构都在积极进行研发 并取得了一些重大进展 下面我们来看一下已经开
  • spark-2.2.0安装和部署——Spark集群学习日记

    前言 在安装后hadoop之后 接下来需要安装的就是Spark scala 2 11 7下载与安装 具体步骤参见上一篇博文 Spark下载 为了方便 我直接是进入到了 usr local文件夹下面进行下载spark 2 2 0 wget h
  • 【ffmpeg + VS2010】编译包含libavutil\common.h后出现找不到inttypes.h的问题

    包含libavutil common h 由于里面 include
  • 正则表达式(Regular Expressions)

    1 至少8个字符 8 2 URL http w w w URL 2 a zA z w w w w S 3 E Mail w w w w w w E Mail 2 w w w E Mail 3 w w w w 4 非负整数 正整数 0 d 5
  • 【设计】LDO

    参考 设计 低压差稳压器 LDO 的设计分析 对于误差放大器 当没有输出电容 为寄生电容的时候 输出的误差放大器为高频极点 而LDO的输出极点为环路的主极点 LDO输出极点随负载电流变化而变化 当负载电流变小 RL增大 Ppow的输出极点也
  • RPC调用的流程

    RPC调用的流程 要让网络通信细节对使用者透明 我们自然需要对通信细节进行封装 我们先看下一个RPC调用的流程
  • 【svelte】A11y: <div> with click handler must have an ARIA role;A11y: non-interactive elements

    问题描述 svelte项目跑起来的时候 控制台打印以下警告 vite plugin svelte src routes page svelte 50 8 A11y visible non interactive elements with
  • Servlet文件上传

    1 创建upload html文件为了提交上传表单
  • matlab 和 excel 数据的导入导出

    1 将excel中的数据导入到matlab中 将excel中 的数据导入到matlab中采用matlab库函数xlsread 1 C xlsread filename xls 2 C xlsread filename xls range 表
  • import java util_java里面import java.util.*;是什么用处?

    展开全部 import java util 导入32313133353236313431303231363533e78988e69d8331333366303064 java util包中的类接口 Java中import的作用是导入要用到的
  • 实验——田忌赛马c++

    故事概述 孙膑先以下等马对齐威王的上等马 第一局田忌输了 接着进行第二场比赛 孙膑拿上等马对齐威王的中等马 获胜了一局 第三局比赛 孙膑拿中等马对齐威王的下等马 又战胜了一局 比赛的结果是三局两胜 田忌赢了齐威王 还是同样的马匹 由于调换一