题目描述
【问题描述】
编写一个实验程序,利用STL中的priority_queue(优先队列)求出包含n个元素的无序整数序列中第k小的元素,其中n和k由用户输入。
【输入形式】第一行为一个整数,表示n的值。
第二行为n个整数,每个整数之间以一个空格间隔。
第三行为一个整数,表示k的值。
【输出形式】第k小的元素。
【样例输入1】5
1 2 4 3 5
3
【样例输出1】3
【样例说明1】序列 1 2 4 3 5中第3小的数是3
【样例输入2】5
1 2 4 3 5
4
【样例输出2】4
【样例说明2】序列 1 2 4 3 5中第4小的数是4
【样例输入3】6
12 6 9 10 7 56
1
【样例输出3】6
【样例说明3】序列 12 6 9 10 7 56中第1小的数是6
【样例输入4】6
12 6 9 10 7 56
6
【样例输出4】56
【样例说明4】序列 12 6 9 10 7 56中第6小的数是56
【评分标准】
-
要求利用STL中的priority_queue(优先队列)实现,不能使用数组。
-
程序要求具有通用性,对于每一个测试数据要求都能通过,通过一组测试数据得20分。
C++程序答案
#include <iostream>
#include<queue>
using namespace std;
int main()
{
int i,zbf_n,a,k;
priority_queue<int, vector<int>, greater<int> > zbf_queue;
cin >> zbf_n;
for(i=0;i<zbf_n;i++){
cin >> a;
zbf_queue.push(a);
};
cin >> k;
for(i=1;i<k;i++){
zbf_queue.pop();
};
cout << zbf_queue.top();
return 0;
}