古有田忌赛马的故事,现在渊子也来赛一赛马。假设每匹马都有恒定的速度,所以速度大的马一定比速度小的马先到终点(没有意外!!)。不允许出现平局。最后谁赢的场数多于一半(不包括一半),谁就是赢家(可能没有赢家)。渊子有N(1≤N≤1000)匹马参加比赛。对手的马的数量与渊子马的数量一样,并且知道所有的马的速度。聪明的你来预测一下这场世纪之战的结果,看看渊子能否赢得比赛
#include
/*
输入参数:
unsigned int num: 赛马的数量; (1<= num <=1000)
unsigned int * speed_yz: yuanzi 的马的速度;
unsigned int * speed_op: 对手的马的速度;
*/
bool IsYuanziWin(unsigned int num, unsigned int * speed_yz, unsigned int * speed_op)
{
if(num <= 0 || num > 1000 || speed_yz == NULL || speed_op == NULL)
return false;
quicksort(speed_yz,num);//渊子马的速度从小到大排序
quicksort(speed_op,num);//对方马的速度从小到大排序
unsigned int cnt = 0;
for(unsigned int i = 0,j = 0; i < num && j < num;i++)
{
if(speed_yz[i] > speed_op[j])//如果渊子马的速度大于对方马的速度则都进行下一匹马再进行比较,否则,只有渊子再拿下一匹速度更快的马与对方当前马进行比较,依次循环知道双方任一一个人的马比较完
{
cnt++;
j++;
if(cnt >= num/2 + 1)//如果渊子的马的获胜的次数多于一半,则渊子赢
{
return true;
}
}
}
return false;
}