原题链接:老王赛马
#include <stdio.h>
void sort(int *nums,int len)
{
int i;
for (i=0;i<len-1;i++)
{
int o;
for (o=i+1;o<len;o++)
{
if (nums[i]>nums[o])
{
int tem;
tem=nums[i];
nums[i]=nums[o];
nums[o]=tem;
}
}
}
}
int main()
{
int num_horse;
int yuan[1000],wang[1000];
while (scanf("%d",&num_horse)&&num_horse)
{
int i,num_win=0,can_win,num_horsew;
can_win=num_horse/2+1; //能赢条件
for(i=0;i<num_horse;i++)
scanf("%d",&yuan[i]);
for (i=0;i<num_horse;i++)
scanf("%d",&wang[i]);
sort(yuan,num_horse); //对两边的马升序排序
sort(wang,num_horse);
num_horsew=num_horse; //num_horsew为对手剩下的马
for (i=0;i<num_horse;i++) //从渊子的弱马开始枚举
{
int o;
for (o=0;o<num_horsew;o++) //把对手的马逐个与渊子的马比较
{
if (!wang[o]) //如果这匹马已经比过了continue
continue;
if (yuan[i]>wang[o]) //如果渊子赢了
{
num_win++;
wang[o]=0;
break;
}
}
if (o==num_horsew) //如果比较过了都赢不了,就把对手最强的马拉下
{
num_horsew--;
wang[num_horsew]=0;
}
}
if (num_win>=can_win)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}解题思路:
注意事项:
参考代码:
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复