Java教程

011:编程填空:前K大的偶数

本文主要是介绍011:编程填空:前K大的偶数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

描述

输入n个整数,输出整数数列中大小排名前k的偶数

 

#include <algorithm>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <string>
#include <map>
#include <set>

using namespace std;
class MyQueue
{
// 在此处补充你的代码
};
int main()
{
	int t;
	cin >> t;
	while(t--) {
		int n, k;
		cin >> n >> k;
		MyQueue q(k);
		for (int i = 0; i < n; ++i)
			cin >> q;
		cout<<q;
		cout << endl;
	}
	return 0; 
}

输入

有多组数据
第一行是数据组数 t
对每组数据: 
第一行为整数n (n>=3)和k
接下来的一行为n个整数,保证这些整数中至少有k个偶数。

输出

对每组数据,输出k个整数,降序排列,表示选出来的大小排名前k的偶数

样例输入

2
9 4
1 2 4 3 6 6 7 8 9
3 2
18 16 14

样例输出

8 6 6 4
18 16

class MyQueue
{
    // 在此处补充你的代码
    int k;

public:
    vector<int> que;
    MyQueue(int _k) : k(_k) {}
    friend void operator>>(istream &is, MyQueue &mq)
    {
        int temp;
        cin >> temp;
        if (temp % 2 == 0)
            mq.que.push_back(temp);
    }
    friend void operator<<(ostream &os, MyQueue &mq)
    {
        sort(mq.que.begin(), mq.que.end());
        for (vector<int>::iterator i = mq.que.end() - 1; mq.que.end() - i <= mq.k; --i)
            cout << *i << ' ';
    }
};

重载左右移运算符来实现题目要求。写友元函数的时候要记得指明对象。queue容器没有迭代器。

C ++迭代器用于对数据结构中的元素进行顺序访问或随机访问。因此,对于根据定义不允许顺序或随机访问的数据结构,迭代器没有任何意义。这就是堆栈和队列没有迭代器的原因。另一方面,向量和列表允许对元素进行顺序和/或随机访问,因此迭代器对于导航这些数据结构是有意义的。

这篇关于011:编程填空:前K大的偶数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!