题解 | 最大的两个数
最大的两个数
https://www.nowcoder.com/practice/7385949943264a9fa4348cbd43e6e00c
#include <iostream>
using namespace std;
#include <bits/stdc++.h>
struct nums {
int pos;
int value;
};
bool comp(nums a, nums b) {
if (a.value != b.value) {
return a.value > b.value;
} else {
return a.pos < b.pos;
}
}
int main() {
vector<vector<int>> matrix(4, vector<int>(5, 0));
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
cin >> matrix[i][j];
}
}
vector<vector<int>> maxim2(2, vector<int>(5, 0));
for (int j = 0; j < 5; j++) {
vector<nums> ma;
for (int i = 0; i < 4; i++) { //遍历每一列
nums num1;
num1.value = matrix[i][j]; //记录值
num1.pos = i; //记录行标
ma.push_back(num1); //插回去
}
sort(ma.begin(), ma.end(), comp);
if (ma[0].pos > ma[1].pos) {
maxim2[0][j] = ma[1].value;
maxim2[1][j] = ma[0].value; //插入前两个最大值,保留原始顺序
} else {
maxim2[0][j] = ma[0].value;
maxim2[1][j] = ma[1].value;
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++) {
cout << maxim2[i][j] << " ";
}
cout << endl;
}
matrix.clear();
return 0;
}
