题目描述
前几天,浙江省刚刚经历了台风袭击,相关部门要求统计一下各个地方的损失情况,并按损失程度从高到低进行排序。
输入
一个整数。
下面行,每行分别是地方的名称,以及本次台风的损失金额。
输出
按损失的金额大小,从高到低进行排序
样例输入
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; }