AcWing 3425. 小白鼠排队
题目描述
代码实现
实现一:冒泡排序
就是简单的两层循环
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
int n;
int w[N];
string color[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>w[i]>>color[i];
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
if(w[i]<w[j])
{
swap(color[i],color[j]);
swap(w[i],w[j]);
}
}
for(int i=0;i<n;i++)
cout<<color[i]<<endl;
return 0;
}
实现二:结构体
自己定义一个cmp函数,作为sort的第三个参数
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
struct node{
int w;
string color;
}nodes[N];
bool cmp(node a,node b)
{
return a.w>b.w;
}
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>nodes[i].w>>nodes[i].color;
sort(nodes,nodes+n,cmp);
for(int i=0;i<n;i++)
cout<<nodes[i].color<<endl;
return 0;
}
实现三:pair
pair与结构体思路差不多,少一个cmp函数,相当于体重与颜色自带绑定
#include<iostream>
#include<algorithm>
#include<cstring>
#define x first
#define y second
using namespace std;
const int N=110;
int n;
pair<int,string> q[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>q[i].x>>q[i].y;
sort(q,q+n);
for(int i=n-1;i>=0;i--)
cout<<q[i].y<<endl;
return 0;
}