列表中的最大数字

时间:2017-09-27 19:33:36

标签: c++ vector input output

第一行有两个值N和K.N是初始行后面的输入数量,K是要搜索的最大数量。

示例输入:

5 2

6

7

17

11

6

(5行输入,寻求2个最大值)

示例输出:

17

11

出于某种原因,我只获得第一个输出而不是第二个输出。

for i in totalrow:
    for j in range(i):
        print(j)

1 个答案:

答案 0 :(得分:0)

由于vectorAddCheck的实现,您的输出向量只包含一个数字。如果向量为空,则添加项目,否则您要么替换它,要么只是跳过新项目。所以你的矢量总是包含一个对象。

您可以通过将方法更改为以下实现来解决此问题:

vector<long> vectorAddCheck(vector<long> x, long value){
    if(x.size() < 2){
        x.push_back(value);
    }
    else {
        unsigned min = (x[0] < x[1]) ? 0 : 1;
        if (x[min] < value){
            x[min] = value;
        }
    }
    return x;
}

虽然可以实现更清洁的实施:

int main() {
    long numLines, numOutputs, temp;
    cin >> numLines >> numOutputs;

    set<long> numbers;
    for(int i = 0; i < numLines; ++i){
        cin >> temp;
        numbers.insert(temp);
    }


    for (set<long>::reverse_iterator it = numbers.rbegin(); it != numbers.rend(); ++it)
    {
        cout << *it << endl;

        --numOutputs;
        if (numOutputs == 0) {
            break;
        }
    }

    return 0;
}