yuanzisaima-C




#include "OJ.h"
#include <stdlib.h>
 
/*
功能:判断yuanzi 的马是否会赢?yuanzi 的马赢了,返回 YES. 否则返回 NO
   
输入参数:
unsigned int num: 赛马的数量;   (1<= num <=1000)
unsigned int * speed_yz: yuanzi 的马的速度;
unsigned int * speed_op: 对手的马的速度;
输出参数:
   无  
返回值:
  char * 型 的字符串,yuanzi 的马赢了,返回 YES. 否则返回 NO;

*/

char * IsYuanziWin(unsigned int num, unsigned int * speed_yz, unsigned int * speed_op)
{
 unsigned int* isExist;
 unsigned int i,j,k,temp;
 int theCountofWin = 0;
 if (num < 1 || num > 1000)
 {
  return "ERROR";
 }
 if (speed_op == NULL || speed_yz == NULL)
 {
  return "ERROR";
 }
 isExist = (unsigned int* )malloc(num * sizeof(unsigned int));
 for (i=0;i<num;i++)
 {
  isExist[i] = 1;
 }

 for (i=0;i<num;i++)
 {
  for (j=i+1;j<num;j++)
  {
   if (speed_yz[i] > speed_yz[j])
   {
    temp = speed_yz[i];
    speed_yz[i] = speed_yz[j];
    speed_yz[j] = temp;
   }
   if (speed_op[i] < speed_op[j])
   {
    temp = speed_op[i];
    speed_op[i] = speed_op[j];
    speed_op[j] = temp;
   }
  }
 }

 for (i=0;i<num;i++)
 {
  for (j=0;j<num;j++)
  {
   if (isExist[j])
   {
    if (speed_op[i] < speed_yz[j])
    {
     isExist[j] = 0;
     break;
    }
   }
  }
  if (j >= num)
  {
   for (k=0;k<num;k++)
   {
    if (isExist[k])
    {
     isExist[k] = 0;
     break;
    }
   }
   theCountofWin -= 1;
  }
  else
  {
   theCountofWin += 1;
  }
 }

 free(isExist);
 if (theCountofWin > 0)
 {
  return "YES";
 }
 else
 {
  return "NO";
 }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值