C/C++编程题之渊子赛马

古有田忌赛马的故事,现在渊子也来赛一赛马。假设每匹马都有恒定的速度,所以速度大的马一定比速度小的马先到终点(没有意外!!)。不允许出现平局。最后谁赢的场数多于一半(不包括一半),谁就是赢家(可能没有赢家)。渊子有N(1≤N≤1000)匹马参加比赛。对手的马的数量与渊子马的数量一样,并且知道所有的马的速度。聪明的你来预测一下这场世纪之战的结果,看看渊子能否赢得比赛


#include <stdlib.h>
  
/*
    
输入参数:
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;
}


</pre><p></p><pre>

 
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值