描述
小王是公司的倉庫管理員,一天,他接到了這樣一個任務:從倉庫中找出一根鋼管。這聽起來不算什麼,但是這根鋼管的要求可真是讓他犯難了,要求如下:
1、 這根鋼管一定要是倉庫中最長的;
2、 這根鋼管一定要是最長的鋼管中最細的;
3、 這根鋼管一定要是符合前兩條的鋼管中編碼最大的(每根鋼管都有一個互不相同的編碼,越大表示生產日期越近)。
相關的資料到是有,可是,手工從幾百份鋼管材料中選出符合要求的那根……
要不,還是請你編寫個程序來幫他解決這個問題吧。
輸入
第一行是一個整數N(N<=10)表示測試數據的組數)
每組測試數據的第一行 有一個整數m(m<=1000),表示倉庫中所有鋼管的數量,
之後m行,每行三個整數,分別表示一根鋼管的長度(以毫米為單位)、直徑(以毫米為單位)和編碼(一個9位整數)。
輸出
對應每組測試數據的輸出只有一個9位整數,表示選出的那根鋼管的編碼,
每個輸出占一行
樣例輸入
2
2
2000 30 123456789
2000 20 987654321
4
3000 50 872198442
3000 45 752498124
2000 60 765128742
3000 45 652278122
樣例輸出
987654321
752498124
看到一個代碼是這樣子的:
#include
#include
#include
#include
using namespace std;
struct m
{
int a;//長度
int b;//直徑
int c;//編號
} s[1001];
bool cmp1(m x,m y)
{
//長度大到小排序
return x.a>y.a;
}
bool cmp2(m x,m y)
{
//半徑小到大排序
return x.b
}
bool cmp3(m x,m y)
{
//編碼從大到小排序
return x.c>y.c;
}
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
int n;//鋼管數量
scanf("%d",&n);
int i,j=0,k=0;
for(i=0; i<n; i++)
scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].c);
sort(s,s+n,cmp1);
for(i=0; i<n; i++)
if(s[i].a==s[0].a)
j++;
sort(s,s+j,cmp2);
for(i=0; i<j; i++)
if(s[i].b==s[0].b)
k++;
sort(s,s+k,cmp3);
printf("%d\n",s[0].c);
memset(s,0,sizeof(s));
}
return 0;
}
然後就是不太理解那個cmp函數那塊 bool類型的函數在括號裡的m是什麼意思呢
不定義bool類型的話,定義成int那結構體還能實現排序嗎?
m就是定義的結構體類型。不定義bool也可以實現排序,不要求很嚴謹的話這個返回值類型可以定義成int等。