(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個人的個人資產值,...