本文主要是介绍sdut——下沉的船,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
身份优先级: woman = child > man > captain.
多组数据(少于组),每一组有一个整数(,代表船上有个人,接下来行,每行有一个名字和他的身份。名字字符长度小于。数据保证不存在重名,注意可能存在多名船长
输出
输出n行,每一行输出一个名字,先上船的名字在前面。
示例输入
6 Jack captain Alice woman Charlie man Teddy woman Bob child Julia woman
示例输出
Alice Teddy Bob Julia Charlie Jack
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node
{char name[16];char job[15];int rank;int idx;
}a[105];
int cmp(node a,node b)
{if(a.rank==b.rank)return a.idx<b.idx;return a.rank<b.rank;
}
int main()
{int n;while(cin>>n){for(int i=0;i<n;i++){cin>>a[i].name>>a[i].job;a[i].idx=i;if(strcmp(a[i].job,"woman")==0)a[i].rank=1;else if(strcmp(a[i].job,"child")==0)a[i].rank=1;else if(strcmp(a[i].job,"man")==0)a[i].rank=2;else if(strcmp(a[i].job,"captain")==0)a[i].rank=3;}sort(a,a+n,cmp);for(int i=0;i<n;i++)cout<<a[i].name<<endl;}return 0;
}
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node
{char name[16];char job[15];int rank;int idx;
}a[105];
int cmp(node a,node b)
{if(a.rank==b.rank)return a.idx<b.idx;return a.rank<b.rank;
}
int main()
{int n;while(cin>>n){for(int i=0;i<n;i++){cin>>a[i].name>>a[i].job;a[i].idx=i;if(strcmp(a[i].job,"woman")==0)a[i].rank=1;else if(strcmp(a[i].job,"child")==0)a[i].rank=1;else if(strcmp(a[i].job,"man")==0)a[i].rank=2;else if(strcmp(a[i].job,"captain")==0)a[i].rank=3;}sort(a,a+n,cmp);for(int i=0;i<n;i++)cout<<a[i].name<<endl;}return 0;
}
这篇关于sdut——下沉的船的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!