Nswoj每日一题:一种排序

本文介绍了一种通过结构体存储矩形信息,并利用C++的sort函数对这些信息进行排序的方法。首先定义了一个结构体来保存矩形的编号、长度和宽度;接着通过输入这些信息并确保长度大于宽度;然后利用自定义的排序规则对矩形进行排序;最后通过比较相邻矩形的信息,只输出不同的矩形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[一种排序]

首先使用结构体保存这个长方形的特点(编号,长,宽);
然后输入每个信息同时对长宽进行位置交换(保证长>宽);
使用sort函数对(0,m)区间内的所有长方形按照Judge()的规则进行排序;
最后用tem1,tem2,tem3保存每个长方形的信息与所有长方形比较,如果不同就打印;
*(因为之前已经做过排序所以相同的长方形已经在相邻的区间内,所以不会打印出来相同的长方形);
#include<iostream>
#include<algorithm>
using namespace std;

struct Rangle {
	int card;
	int length;
	int width;
}RangleArray[1000];

bool Judge(Rangle a_Rangle, Rangle b_Rangle) {
	if (a_Rangle.card != b_Rangle.card) {
		return a_Rangle.card < b_Rangle.card;
	}
	else {
		if (a_Rangle.length != b_Rangle.length) {
			return a_Rangle.length < b_Rangle.length;
		}
		else {
			return a_Rangle.width < b_Rangle.width;
		}
	}
}

int main() {
	int n;
	cin >> n;

	while (n--) {
		int m;
		cin >> m;//rangles

		for (int i = 0; i < m; i++) {
			cin >> RangleArray[i].card >> RangleArray[i].length >> RangleArray[i].width;

			if (RangleArray[i].length < RangleArray[i].width) {
				int temp = RangleArray[i].length;
				RangleArray[i].length = RangleArray[i].width;
				RangleArray[i].width = temp;
			}
		}

		sort(RangleArray, RangleArray + m, Judge);

		int tem1 = -1, tem2 = -1, tem3 = -1;
		for (int i = 0; i < m; i++) {
			if (tem1 != RangleArray[i].card || tem2 != RangleArray[i].length || tem3 != RangleArray[i].width) {
				cout << RangleArray[i].card << ' ' << RangleArray[i].length << ' ' << RangleArray[i].width << endl;
			}
			tem1 = RangleArray[i].card;
			tem2 = RangleArray[i].length;
			tem3 = RangleArray[i].width;
		}
	}

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值