题目描述
前几天,浙江省刚刚经历了台风袭击,相关部门要求统计一下各个地方的损失情况,并按损失程度从高到低进行排序。
输入
一个整数\(N\leq 10\)。
下面\(N\)行,每行分别是地方的名称,以及本次台风的损失金额。
输出
按损失的金额大小,从高到低进行排序
样例输入
5
linhai 100
shaoxing 60
hangzhou 80
jiaxing 30
tiantai 70
样例输出
linhai 100
hangzhou 80
tiantai 70
shaoxing 60
jiaxing 30
思路&解答
经典排序水题。
首先,需要建立一个结构体struct node
,里面包含每位难民的信息。string name
:每位难民的姓名。int money
:每位难民损失的金额。
具体实现:
struct node
{
string name;
int money;
};
在自定义排序函数cmp(node a,node b)
:
bool cmp(node a,node b)
{
return a.money > b.money; //从损失程度高到损失程度低
}
最后调用sort()
函数即可。
代码
#include <bits/stdc++.h>
using namespace std;
struct node
{
string name;
int money;
};
bool cmp(node a, node b)
{
return a.money > b.money;
}
int main()
{
node p[12];
int n;
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> p[i].name >> p[i].money;
sort(p + 1, p + n + 1, cmp);
for (int i = 1; i <= n; ++i)
cout << p[i].name << ' ' << p[i].money << endl;
return 0;
}
/**************************************************************
Reach-Top OJ
RID:350347
code length:398 B
Problem: 2909
User: 2018summerXC82
Language: C++
Result: 正确
Time:0 ms
Memory:1720 kb
****************************************************************/