船要沉了,船上有n个人,要求他们按照rat<women&child<man<captain的顺序下船,所以我们要做的是把每个人按照身份拍成4队,然后按照这四队的顺序下船
我在这里用的是queue,实际上,数组,vector,map,list都可以,选用最熟悉的存储结构就好
为了标明这些都代表什么,用同样可以运行的另一种写法的代码注释在一边了^_^
#include <queue>
#include <cstdio>
#include <memory>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
//queue<string> rat,w_c,man,cap;
queue<string> q[4];
int main()
{
int n; cin>>n;
string name, r;
for(int ni=0;ni<n;ni++)
{
cin>>name>>r;
if(r=="rat") q[0].push(name);//rat.push(name);
else if(r=="man") q[2].push(name);//man.push(name);
else if(r=="captain") q[3].push(name);//cap.push(name);
else if(r=="woman" || r=="child") q[1].push(name);//w_c.push(name);
}
for(int i=0;i<4;i++)
{
while(!q[i].empty())
{
string s=q[i].front();
cout<<s<<endl;
q[i].pop();
}
}
/*
while(!rat.empty())
{
string s=rat.front(); rat.pop();
cout<<s<<endl;
}
while(!w_c.empty())
{
string s=w_c.front(); w_c.pop();
cout<<s<<endl;
}
while(!man.empty())
{
string s=man.front(); man.pop();
cout<<s<<endl;
}
while(!cap.empty())
{
string s=cap.front(); cap.pop();
cout<<s<<endl;
}
*/
return 0;
}

本文介绍了一种模拟沉船场景下人员疏散的算法,按照特定顺序安排不同身份的人依次离船。通过使用队列数据结构实现人员分类并有序疏散。
3万+

被折叠的 条评论
为什么被折叠?



