栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PAT乙级1015(C语言实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PAT乙级1015(C语言实现)

大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。

目录

题目

题解

思路

经验总结


题目


题解
#include 
#include 
typedef struct
{
	int test_num;
	int vq;
	int iq;
}student;
 int cmp(const void* a, const void* b) 
 {
	 student c = *(student*)a;
	 student d = *(student*)b;
	 int ds = (d.iq + d.vq) - (c.iq + c.vq);
	 if(ds != 0)
	 return ds;
	 else if (d.vq-c.vq!=0)
		 return d.vq - c.vq;
	 else 
		 return c.test_num - d.test_num;
}
int main()
{
	int n = 0, low = 0, high = 0,i=0,max=0;
	int f = 0, s = 0, t = 0, l = 0;
	scanf("%d%d%d", &n, &low, &high);
	student a[100000];
		for (i = 0; i < n; i++)
			scanf("%d%d%d", &a[i].test_num, &a[i].vq, &a[i].iq);
		student fir[100000], sec[100000], thi[100000], last[100000];
		for (i = 0; i < n; i++)
		{
			if (a[i].vq >= high && a[i].iq >= high)
			{
				fir[f].test_num = a[i].test_num;
				fir[f].vq =a[i].vq;
				fir[f].iq = a[i].iq;
				f++;
				continue;
			}
			if (a[i].vq >= high && a[i].iq < high&&a[i].iq>=low)
			{
				sec[s].test_num = a[i].test_num;
				sec[s].vq = a[i].vq;
				sec[s].iq = a[i].iq;
				s++;
				continue;
			}
			if (a[i].vq < high && a[i].iq < high&& a[i].vq >=low&& a[i].iq>=low&& a[i].vq >=a[i].iq)
			{
				thi[t].test_num = a[i].test_num;
				thi[t].vq = a[i].vq;
				thi[t].iq = a[i].iq;
				t++;
				continue;
			}
			if (a[i].vq >= low && a[i].iq >= low)
			{
				last[l].test_num = a[i].test_num;
				last[l].vq = a[i].vq;
				last[l].iq = a[i].iq;
				l++;
				continue;
			}
		}
		qsort(fir, f, sizeof(fir[0]), cmp);
		qsort(sec, s, sizeof(fir[0]), cmp);
		qsort(thi, t, sizeof(fir[0]), cmp);
		qsort(last, l, sizeof(fir[0]), cmp);
		printf("%dn", f + s + t + l);
		for (i = 0; i < f; i++)
			printf("%d %d %dn", fir[i].test_num, fir[i].vq, fir[i].iq);
		for (i = 0; i < s; i++)
			printf("%d %d %dn", sec[i].test_num, sec[i].vq, sec[i].iq);
		for (i = 0; i < t; i++)
			printf("%d %d %dn", thi[i].test_num, thi[i].vq, thi[i].iq);
		for (i = 0; i < l; i++)
		{
			printf("%d %d %d", last[i].test_num, last[i].vq, last[i].iq);
			if (i != l-1)
				printf("n");
		}
	return 0;
}


思路

  先码住,这篇题解收获多多,后面写。


经验总结


本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934699.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号