算法题每日一练---第29天:角逐冠军

简介: 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。

一、问题描述


有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。

球赛的规则如下:

如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。


根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。


二、题目要求


考察

数学思想,规律
STL的set标准模板库
建议用时:10~25min

三、问题分析

8.png

看了上面的球赛规则是不是感到无从下手,什么叫谁打败了谁,谁又一定打败谁?

我们反着思考,既然一场比赛有胜有负,那么决出冠军的比赛肯定是一个人没输过,那他不就赢了。

把胜利的人放在一起,失败的人放在一起。只要胜利的人数比失败的人数多1个,那么就能决出冠军。可以用C++的set存储人数,防止重复


四、编码实现


#include<iostream>#include<set>//头文件usingnamespacestd;
intmain()
{
set<char>s1,s2;//定义字符型chara,b;
inti,n;
cin>>n;//输入for(i=0;i<n;i++)//循环输入比赛结果,第一个获胜    {
cin>>a>>b;
s1.insert(a);//胜利的人存入s2.insert(b);//失败的人存入    }
if(s1.size()-s2.size()==1)//胜利的人数比失败多一个    {
cout<<"Y";//胜者    }
elsecout<<"N";//无return0;
}


五、输出结果


9.png

相关文章
MMEditing | 新视频超分算法冠军BasicVSR++来了
视频复原任务 (Video Restoration) 。它除了可以提高用户体验外, 还可以提高检测和分割等任务的准确度。其难点在于需要从高度相关但未对齐的视频帧中收集补充信息以进行恢复,在循环模型中跨帧传输长时信息和对齐特征的问题仍然是一个很艰巨的任务。
1068 0
MMEditing | 新视频超分算法冠军BasicVSR++来了
|
4月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
168 0
|
机器学习/深度学习 人工智能 算法
ICLR 2022|让绝艺上桌打麻将,腾讯AI Lab全新策略优化算法战胜人类冠军
ICLR 2022|让绝艺上桌打麻将,腾讯AI Lab全新策略优化算法战胜人类冠军
399 0
|
算法
算法题每日一练---第78天:二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target
215 1
算法题每日一练---第78天:二分查找
|
存储 算法
|
算法
算法题每日一练---第76天:丑数 l
丑数 就是只包含质因数 2、3 和 5 的正整数。
165 1
算法题每日一练---第76天:丑数 l
|
算法
算法题每日一练---第75天:Nim 游戏
你和你的朋友,两个人一起玩 Nim 游戏。
338 0
算法题每日一练---第75天:Nim 游戏
|
算法
算法题每日一练---第74天:快乐数
编写一个算法来判断一个数 n 是不是快乐数。
196 0
算法题每日一练---第74天:快乐数
|
存储 算法
算法题每日一练---第73天:加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
181 0
算法题每日一练---第73天:加一