【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马

简介: 【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马

💡前言🌞:  


大伙们好!😄又到了小陈蓝桥杯每日一题的时间了~ 😋😋😋今天也带来了十分有趣的题目!🥰🥰🥰用C语言实现——盗版Huybery系列之手抓饼赛马,这个题目很有意思,新颖的同时又很值得思考!我现在迫不及待地要和大家分享~!😄🤗🤗


 💛盗版Huybery系列之手抓饼赛马题目💛


💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡


大家听说过“田七赛马”的故事吗?


那是在遥远的战国时期了,当时的齐国上流社会赛马成风,上至国君下至大臣,常常以重金赌赛马的输赢。而田七是一个没什么心眼却很爱面子的大臣,别人找他赛马他不好意思拒绝。但由于策略不当,屡赌屡输。


终于,在他将要把所有的俸禄都输光的时候,他找到从小长在大草原,对各种马的习性,能力都很熟悉的朋友手抓饼,请他帮自己赢得下一场比赛。


手抓饼暗中观察了对手的马,发现田七的马和他的相差不远,只要运用一点小手段,就很有可能战胜对手。


下场比赛的规则为:田七和对手分别使用N匹马来参赛,比赛过程中不允许出现平局, 最后谁赢的场数多于一半谁就是获胜(最终可能没有赢家)。假设每匹马都有恒定的速度,而手抓饼已经掌握了所有马的速度。


现在,请你来你来预测一下,手抓饼能否帮助田七赢得比赛。


输入:

输入有多组测试数据。

每组测试数据包括3行:

第一行输入N(1≤N≤1000)。表示马的数量。

第二行有N个整型数字,即田七的N匹马的速度。

第三行有N个整型数字,即对手的N匹马的速度。

当N为0时结束。


输出:

若通过手抓饼的安排,田七能赢得比赛,那么输出“YES”。

否则输出“NO”。


每个输出占一行。


样例输入

5

2 3 3 4 5

1 2 3 4 5

4

2 2 1 2

2 2 3 1

0

样例输出

YES

NO


💪 解题思路的分享💪  


田忌赛马的故事想必大家都知道,田忌获胜的秘诀就是让自己的劣马来消耗掉对手的好马,然后用自己的好马来对上敌方的劣马,是非常阴险的做法。

我们就依着田忌的做法来写代码。

首先输入马匹的个数,接着输入两组马匹速度的数据。

然后用冒泡排序将马匹的速度由低到高排序。

我们定义一个变量计数君t=0来存放数据,等下来判断比赛结果。

用两组for循环来遍历两组数据,如果田忌的马匹的速度大于对手的马匹速度的任意一只,那么就让 t+=1 。

因为数组已经是有序数组,我们下次循环对手的马匹时,就可以从下标为t的元素开始。

如果最后t>n/2,即田忌获胜,否则田忌落败。


😊题目源码的分享😊


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main()
{
  int n, a[1000], b[1000];
  while (cin >> n)
  {
  if (n == 0) break;
  else
  {
    int t = 0;
    for (int i = 0; i < n; i++)
    {
    cin >> a[i];
    }
    for (int i = 0; i < n; i++)
    {
    cin >> b[i];
    }
    t = 0;
    for (int i = 0; i < n - 1; i++)
    {
    for (int r = 0; r < n - 1 - i; r++)
    {
      if (a[r] > a[r + 1])
      {
      int d = a[r];
      a[r] = a[r + 1];
      a[r + 1] = d;
      }
      if (b[r] > b[r + 1])
      {
      int f = b[r];
      b[r] = b[r + 1];
      b[r + 1] = f;
      }
    }
    }
    for (int j = 0; j < n; j++)
    {
    for (int m = t; m < n; m++)
    {
      if (a[j] > b[m])
      {
      t += 1;
      break;
      }
      else
      ;
    }
    }
    if (t > n / 2) cout << "YES";
    else cout << "NO";
    cout << endl;//打印换行,方便输入。
  }
  }
  return 0;
}

👉 本菜鸡&总结 👈


这是我们学校蓝桥杯选拔赛上面的题目,我觉得很有意思就写了这篇博客,这种题目比较耐人寻味,比如这道题肯定就还有很多其他的做法,里面的冒泡排序也可以直接用qsort函数来实现,不过我还没有实践,哪位大佬有更好的做法,请在评论区不吝赐教哦~😀如果觉得我写的不错的话还请点个赞和关注哦~我会持续输出编程的知识的!🌞🌞🌞

0a506bd9fcb9b52271028b463377ac04_b2614d5b5232316e47d69634062ea882.gif


相关文章
|
7月前
|
存储 人工智能 Serverless
大学生们注意了,你的拜年姿势准备好了吗?
来尝试一种全新的“数字人”拜年方式吧。上传个人照片,即可一键创建数字人分身,还可以搭配春节服饰、背景、拜年模板,生成专属的数字人拜年视频,简单无门槛,有心更有新。
129 7
|
7月前
|
C语言
蓝桥杯入门题 赛前练一练,喝前摇一摇
这是一个C语言编程题目集,包含10个不同的任务。任务包括:1) 打印所有5位01串,2) 找出n个数的最大值、最小值和,3) 搜索整数在数列中的位置,4) 找出立方和等于自身的三位数,5) 找出回文数,6) 对数列进行排序,7) 将秒转换为HH:MM:SS格式,8) 比较两个字符串是否相同,9) 数字的中文读法,10) 计算阶乘。每个任务都有对应的代码示例。
56 2
|
6月前
2022蓝桥杯大赛软件类国赛真题 卡牌
2022蓝桥杯大赛软件类国赛真题 卡牌
30 0
|
算法 Go
牛客寒假算法集训营 2 感想
【【题目讲解】2023牛客寒假算法基础集训营2】
98 0
牛客寒假算法集训营 2 感想
|
机器学习/深度学习 人工智能 算法
|
算法 数据库 C语言