日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qsort 三级排序

發布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qsort 三级排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nyoj ? ? ? ? ? ? ? ? 一種排序

描述
現在有很多長方形,每一個長方形都有一個編號,這個編號可以重復;還知道這個長方形的寬和長,編號、長、寬都是整數;現在要求按照一下方式排序(默認排序規則都是從小到大);

1.按照編號從小到大排序

2.對于編號相等的長方形,按照長方形的長排序;

3.如果編號和長都相同,按照長方形的寬排序;

4.如果編號、長、寬都相同,就只保留一個長方形用于排序,刪除多余的長方形;最后排好序按照指定格式顯示所有的長方形; 輸入
第一行有一個整數 0<n<10000,表示接下來有n組測試數據;
每一組第一行有一個整數 0<m<1000,表示有m個長方形;
接下來的m行,每一行有三個數 ,第一個數表示長方形的編號,

第二個和第三個數值大的表示長,數值小的表示寬,相等
說明這是一個正方形(數據約定長寬與編號都小于10000);
輸出
順序輸出每組數據的所有符合條件的長方形的 編號 長 寬
樣例輸入
1 8 1 1 1 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 2 1 2 2 2 1
樣例輸出
1 1 1 1 2 1 1 2 2 2 1 1 2 2 1
來源
經典題目
上傳者
iphxer

cpp:

#include<stdio.h> #include<stdlib.h> #define MAX 1000 #define swap(a,b) {t=a;a=b;b=t;} int t; struct node {int no;int l;int w; }; node a[MAX]; int cmp(const void *a,const void *b) {struct node *c=(node *)a;struct node *d=(node *)b;if(c->no==d->no){if(c->l==d->l){return c->w-d->w;}else return c->l-d->l;}else return c->no-d->no; } int main() {int T;scanf("%d",&T);while(T--){int m,i;scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d%d",&a[i].no,&a[i].l,&a[i].w);if(a[i].l<a[i].w) swap(a[i].l,a[i].w);}qsort(a,m,sizeof(node),cmp);for(i=0;i<m-1;i++){if(a[i].no==a[i+1].no&&a[i].l==a[i+1].l&&a[i].w==a[i+1].w)continue;printf("%d %d %d\n",a[i].no,a[i].l,a[i].w);}printf("%d %d %d\n",a[m-1].no,a[m-1].l,a[1].w);}return 0; }

總結

以上是生活随笔為你收集整理的qsort 三级排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。