案例7-2 寻找大富翁 (25 分)(STL容器)

胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。

输入格式:
输入首先给出两个正整数N(≤10​6​​ )和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。

输出格式:
在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格

在这里插入图片描述

在这里插入图片描述

题目思路:
使用vector容器封装起来,再用sort函数排序简单快捷。另外再考虑到①数据是长整型②在输出时取m和n的最小值(想想为什么)。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
bool mycmp(long long int a, long long int b) {
    
     return a > b; }
int main()
{
    
    
	int n, m;
	long long int t;
	vector<long long int> ar;
	cin >> n >> m;
	
	for (int i = 0; i < n; i++)
	{
    
    
		cin >> t;
		ar.push_back(t);
	}
	sort(ar.begin(), ar.end(),mycmp);
	int k = m < n ? m : n;	//m和n的大小不确定,但是数据只能输出最少的个数
	for (int i = 0; i < k; i++)
	{
    
    
		if (i)cout << " ";
		cout << ar[i];
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/xdg15294969271/article/details/113971808