• 数据结构与算法题目集(中文)7-38 寻找大富翁 (25分) (sort函数、优先队列进行排序)


    1.题目

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

    输入格式:

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

    输出格式:

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

    输入样例:

    8 3
    8 12 7 3 20 9 5 18
    

    输出样例:

    20 18 12

    2.题目分析

    1.思路:快排或者堆排序

    2.实现:sort或者priority_queue

    3.注意:N居然还可以小于M 我嘤嘤嘤??

    4.注注意意:sort函数中使用greater<int>():sort(list.begin(), list.end(), greater<int>());是逆序输出

    而priority_queue中greater<int>()是正序输出注意区别

    3.代码

    sort

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<functional>
    #include<algorithm>
    using namespace std;
    vector<int>list;
    int main()
    {
    	int n, m;
    	cin >> n >> m;
    	for (int i = 0; i < n; i++)
    	{
    		int temp;
    		scanf("%d", &temp);
    		list.push_back(temp);
    	}
    	sort(list.begin(), list.end(), greater<int>());
    	int count = 0;
    	int count2 = 0;
    	vector<int>::iterator run;
    	for (run = list.begin();count2<m&& run != list.end(); run++)
    	{
    		if (count == 0)
    		{
    			printf("%d", *run); count++;
    		}
    		else
    			printf(" %d", *run);
    		count2++;
    	}
    
    }

    priority_queue

    #include<iostream>
    #include<queue>
    #include<cstdio>
    using namespace std;
    int main()
    {
    	int n, m;
    	cin >> n >> m;
    	priority_queue<int>list;
    	int temp;
    	for (int i = 0; i < n; i++)
    	{
    		scanf("%d",&temp);
    		list.push(temp);
    	}
    	int count = 0;
        if(n<m)m=n;
    	for (int i = 0; i < m; i++)
    	{
    		int temp2 = list.top(); list.pop();
    		if (count == 0)
    		{
    			printf("%d", temp2);
    			count++;
    		}
    		else
    			printf(" %d", temp2);
    	}
    	cout << endl;
    
    }
  • 相关阅读:
    C++ <cstring> 里的一些常用函数
    Hadoop_第一次作业
    线性回归理解和应用例子
    条款28 :避免返回handles指向对象内部成分
    条款25 :尽可能延后变量定义式的出现时间
    条款21 :必须返回对象时,别妄想返回其reference
    条款16:成对使用new和delete时要采用相同的形式
    条款22 :将成员变量声明为private
    条款13:以对象管理资源
    条款12:复制对象时勿忘其每一个成分
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12789000.html
Copyright © 2020-2023  润新知