尋找大富翁(Top k問題)

2021-06-16 09:14:52 字數 900 閱讀 4153

(1)尋找大富翁問題。

題目描述:

浙江桐鄉烏鎮共有n個人,請找出該鎮上的前m個大富翁.

輸入:輸入包含多組測試用例.

每個用例首先包含2個整數n(0

輸出:請輸出烏鎮前m個大富翁的財產數,財產多的排前面,如果大富翁不足m個,則全部輸出,每組輸出佔一行.

這其實是乙個top k問題,求乙個大陣列中的最大的k個數。

(2)演算法實現思想:使用最小堆來尋找最大的k個數,並且使用快速排序對最小堆進行排序,按從大到小的順序輸出。

#includeusing namespace std;

void quick_sort(int a, int left, int right)

a[i] = temp;

quick_sort(a, left, i - 1);

quick_sort(a, i + 1, right); }}

//修整最小堆

void fix_min_heap(int a, int pos, int len)

}//建立最小堆

void build_min_heap(int a, int len) }}

int main() {

int total[100000];

int min_heap[10];

int n, m, i=0, j=0;

while(cin>>n>>m)

{ if(m == 0&& n == 0)

break;

for(i=0; i>total[i];

for(j=0;j0; --i)

cout<

尋找大富翁

015年胡潤研究院的調查顯示,截至2014年9月,個人資產在600萬元以上高淨值人群達290萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和 m 1 0 其中 n為總人數,m為需要找出的大富翁數 接下來一行給出 n個人的個人資產值,以百萬元為單...

尋找大富翁

胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和 m 1 0 其中 n為總人數,m為需要找出的大富翁數 接下來一行給出 n個人的個人資產值,以百萬元為單位,為不超過...

尋找大富翁

7 16 尋找大富翁 25 分 胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,...