日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7-1 寻找大富翁 (25 分)(思路加详解+两种做法(一种优先队列,一种vector容器))

發布時間:2023/12/4 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-1 寻找大富翁 (25 分)(思路加详解+两种做法(一种优先队列,一种vector容器)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

胡潤研究院的調查顯示,截至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

二:思路

第一種做用的是vector容器,調用了sort函數,然后用v.back();訪問容器的最后一個元素,然后再刪除
第二種做法是用優先隊列,優先隊列里有升序和降序兩種形式,接下來做法類似。

三:知識速遞 (對vector容器常用方法不熟悉的兄弟們可以點鏈接學習哈)

vector的常用方法

那優先隊列 我就直接給出了拿著用就行,他雖然說的是隊列但 訪問隊首元素用的是top(), 而不是front(),兄弟們如果要用的話,這個地方需要特別注意一下,其他就和正常的棧和隊列的用法一樣

//升序隊列 priority_queue <int,vector<int>,greater<int> > q; //降序隊列 priority_queue <int,vector<int>,less<int> >q;

四:上碼

第一種做法:

#include<bits/stdc++.h> using namespace std; int main() {vector<int>q;int N,M;cin >> N >> M;for(int i = 0; i < N; i++){int temp;cin >> temp;q.push_back(temp);}sort(q.begin(),q.end());if(N >= M){ for( int i = 0; i < M; i++){if( i == M - 1)cout << q.back();elsecout << q.back() << ' ';q.pop_back();}}else{for( int i = 0; i < N; i++){if( i == N - 1)cout << q.back();elsecout << q.back() << ' ';q.pop_back();}} }

第二種做法:

#include<bits/stdc++.h> using namespace std;int main(){int N,M;priority_queue <int,vector<int>,less<int> >q;cin >> N >> M;for( int i = 0; i < N; i++ ){int temp;cin >> temp;q.push(temp);} if( N > M){for( int i = 0; i < M; i++){if( i == M-1){cout << q.top();q.pop();}else{cout << q.top() << ' ';q.pop(); }}}else{for( int i = 0; i < N; i++){if( i == N-1){cout << q.top();q.pop();}else{cout << q.top() << ' ';q.pop(); }}}}


加油BOY!

總結

以上是生活随笔為你收集整理的7-1 寻找大富翁 (25 分)(思路加详解+两种做法(一种优先队列,一种vector容器))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。