排序问题题解大合集
算法1
不同的身份赋予不同的权值,最后排序即可
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
struct node{
string a,b;
int x,id;
}a[101];
bool cmp(node a,node b)
{
if(a.x==b.x)return a.id<b.id;
else return a.x<b.x;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].a>>a[i].b;
a[i].id=i;
if(a[i].b=="rat")a[i].x=1;
else if(a[i].b=="woman"||a[i].b=="child")a[i].x=2;
else if(a[i].b=="man")a[i].x=3;
else a[i].x=4;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)cout<<a[i].a<<endl;
}
#(❁´◡`❁)
看了一圈,就只有我在这里用堆
你好 我想问一下 cmp 和sort怎么确保编号小的在前呀,萌新求问