题解!|合影效果(结构体)
2026-05-11 20:53:54
发布于:上海
18阅读
0回复
0点赞
直接上结构体好吧
思路:
用一个bool或int变量存储性别,男性存储成1,女性存储成0,用cmp函数排序时就能达到先排男性的效果
搞完cmp后这题就可以直接秒了
上代码!
#include<bits/stdc++.h>//万能头~
using namespace std;
int n;
struct pz{
int sex;
double h;
}a[50];
bool cmp(pz a,pz b){
if(a.sex!=b.sex){//当一个人为男性,一个人为女性时,先排男性
return a.sex>b.sex;
}
if(a.sex==1){//都为男性,从小到大排
return a.h<b.h;
}
return a.h>b.h;//不用加额外判断,因为满足上面条件的已经return了,女性按从大到小排
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
if(s=="male"){//判断:男性存储为1
a[i].sex=1;
}else{
a[i].sex=0;//女性存储为0
}
cin>>a[i].h;
}
sort(a+1,a+n+1,cmp);//上sort
for(int i=1;i<=n;i++){
printf("%.2f",a[i].h);//最后保留两位小数输出身高
cout<<" ";//这个应该可以加在printf里面,但我不是很擅长就单开一行了,反正这题不会TLE,MLE
}
return 0;
}
完美收尾~
这里空空如也







有帮助,赞一个