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

问题描述
如果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;}elsecout << "田忌与齐王打平" << endl;}return 0;
}


实验——田忌赛马c++相关推荐

  1. 【NOJ1047】【算法实验四】田忌赛马(tian ji racing)

    1047.田忌赛马(tian ji racing) 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两 ...

  2. 田忌赛马贪心算法_田忌赛马 贪心算法

    算法实验课回顾 田忌赛马 问题描述: 你一定听说过田忌赛马的故事吧?如果3匹马变成n匹(n<=100),齐王仍然让他的马按照优到劣的顺序初赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以 ...

  3. 2022山东理工大学pta程序设计---实验五(一维数组)代码

    7-1 sdut- C语言实验-最值 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置. 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换.输出转换好 ...

  4. python田忌赛马

    一,简介 田忌赛马的故事大家都知道我就不展开说了,田忌能用同全面被碾压的马赢了齐威王(公子),我觉得这是十分具有智慧的.但是,如果说这里的条件改为:1,田忌的马比齐威王同等次的马弱一点但是比齐威王下一 ...

  5. 算法分析与设计——田忌赛马

    问题描述: 你一定听说过田忌赛马的故事吧?如果3匹马变成n匹(n<=100),齐王仍然让他的马按照优到劣的顺序初赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以得到200两银子:输一局, ...

  6. 田忌赛马问题java,田忌赛马—对策问题教学案例

    龙潭区实验学校 曲冰 一.创设情境,激趣导入 课前我们做一个热身的小游戏,1.2.3用这三个数字组成不同的三位数,你能组成多少个不同的三位数? 说的真好,我表扬这位同学说的真好,谁知道他说的好在哪里? ...

  7. 二维数组正式讲+田忌赛马

    考点 排序 冒泡排序 O(n^2) 选择排序 O(n^2) (插入排序) 分离每一位 正序 字符串 栈(递归) 逆序 哈希(hash) → 用值直接作为下标 数组的基本操作 插入和删除 逆序(移位) ...

  8. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加

    数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...

  9. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  10. legend位置 pyecharts_实验|pyecharts数据可视化分析-1

    1. 实验介绍 本实验主要介绍pyecharts基本特点与属性. 1.1. 实验目的 了解pyecharts功能.特点.与安装方式. 1.2. 知识点 pyecharts特点 pyecharts图表 ...

最新文章

  1. 电脑与人脑,信息与知识
  2. Mac开发环境配置 就喜欢折腾
  3. 计算机 编程 教程 pdf,计算机专业教程-第3章编程接口介绍.pdf
  4. 轻松理解UML用例图时序图类图的教程
  5. 查看修改oracle数据库字符集
  6. java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL
  7. Java 调用http接口
  8. keil5怎么接入汇编_keil中如何让汇编语言生成hex文件
  9. c语言课程设计六角填数,关于蓝桥杯C语言B组的六角型答案问题
  10. 单元测试框架TestableMock快速入门(五):复用Mock类与方法
  11. BZOJ4033 [HAOI2015]树上染色 【树形dp】
  12. 简单了解几种常见的网络通信协议
  13. 资源 | 最新版区块链术语表(中英文对照)2019-1.14
  14. 520情人节礼物可以送什么?最实用的礼物推荐
  15. 计算机加入域的一种方法
  16. 尝试进行函数封装--计算BMI值
  17. 【机器人关节空间与笛卡尔空间示教】
  18. html中如何引用其外部字体,css引入外部字体
  19. Bugly使用记录——异常上报
  20. 用keil4打开keil5的工程文件导致卡死解决办法

热门文章

  1. efcore微软官方文档
  2. [Unity特效]使用Projector投影仪来制作角色脚下的特效圆环以及技能指示器skill indicator
  3. 有道云笔记怎么保存html,有道云笔记如何保存网页 有道笔记保存页面教程
  4. 2019全国大学生电子设计大赛-F题纸张计数
  5. 小样本不符合正态_尿液样本HPV分型检测用于宫颈癌筛查的可能性
  6. 新媒体渠道运营推广技巧
  7. gg修改器怎么修改服务器数值,gg修改器怎么修改数值 | 手游网游页游攻略大全...
  8. 观远数据带你乘云驾“务”,让决策更智能
  9. 【最小割】HDU 5294 Tricks Device
  10. 或是独体字吗_知识:贝是独体字吗什么结构