【PTA-乙级】1015德才论 超详解 + 排序函数sort()的使用与介绍

本文详细介绍了如何使用sort函数解决蓝桥杯比赛中的‘德才论’问题。通过分析错误解法,引入结构体和正确的sort排序方法,解释了在总分相同情况下如何根据道德分进行排序。同时,讨论了cmp函数中可能出现的错误,并提出了优化解法的建议,强调了库函数sort在算法中的重要性。
摘要由CSDN通过智能技术生成

前言:

这个题真正让我领会到了库函数的重要性 :在不知道sort函数之前 我用最基础的算法 写了很久 结果还不对 = = 就很头疼 但是我查其他人的解法中 10个有9个用了sort函数 最开始我不知什么鬼原因 不想用这个sort函数解这个题 最终还是折服了 查了sort()的基本用法后 成功解出了此题

先看 一开始的解法: (错误的,若有人能看出哪里错误,欢迎评论区留言)

#include<iostream>
using namespace std;
int arr[50000][4];
int main()
{
	int n = 0, min = 0,  max = 0;  
	cin >> n >> min >> max;  //人数 最低  优先
	int num = 0;
	int a1 = 0, a2 = 0, a3 = 0, a4 = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i][0] >> arr[i][1] >> arr[i][2];   //编号 德 才
		if (arr[i][1] < min || arr[i][2] < min)
		{
			arr[i][3] = 0;   //不考虑
			num++;
		}
		if (arr[i][1] >= max && arr[i][2] >= max)
		{
			arr[i][3] = 1;   //德才双全  1
			a1++;
		}
		else if (arr[i][1] >= max && arr[i][2] < max)
		{
			arr[i][3] = 2;   //德到才不到 2
			a2++;
		}
		else if (arr[i][3] != 0 && arr[i][1] < max && arr[i][2] < max && arr[i][1] >= arr[i][2])
		{
			arr[i][3] = 3;   //才德都不行 但是德>=才  3
			a3++;
		}
		else if (arr[i][3] != 0)
		{
			arr[i][3] = 4;   //才德都不行 且德<才  还有  才到德不到 4
			a4++;
		}
	}
	cout << n - num << "\n";
	// 排序
	int t = 1;

	int number[5] &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值