-
题目描述:
-
输入一个四行五列的矩阵,找出每列最大的两个数。
-
输入:
-
输入第一行包括一个整数n(1<=n<=1000),接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。
-
输出:
-
可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。
输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
-
样例输入:
-
1 1 2 4 9 8 -1 4 9 8 8 12 9 8 7 0 7 8 9 7 0
-
样例输出:
-
12 9 9 9 8 7 8 9 8 8
#include <stdio.h>
#include <stdlib.h>
int pos[10][10], res[5][5];
int main() {
int n, i, j, max, min, k, tmp1, tmp2;
scanf("%d", &n);
while(n--) {
for(i = 0; i < 4; i++) {
for(j = 0; j < 5; j++) {
scanf("%d", &pos[i][j]);
}
}
k = 0;
for(i = 0; i < 5; i++) {
max = pos[0][i];
tmp1 = 0;
for(j = 1; j < 4; j++) {
if(max < pos[j][i]) {
max = pos[j][i];
tmp1 = j;
}
}
if(tmp1 != 0) {
min = pos[0][i];
tmp2 = 0;
}
else {
min = pos[1][i];
tmp2 = 1;
}
for(j = 1; j < 4; j++) {
if(pos[j][i] <= max && min < pos[j][i] && j != tmp1) {
min = pos[j][i];
tmp2 = j;
}
}
if(tmp1 < tmp2) {
res[0][k] = max;
res[1][k] = min;
}
else {
res[0][k] = min;
res[1][k] = max;
}
k++;
}
for(i = 0; i < k - 1; i++) {
printf("%d ", res[0][i]);
}
printf("%d \n", res[0][k - 1]);
for(i = 0; i < k - 1; i++) {
printf("%d ", res[1][i]);
}
printf("%d \n", res[1][i]);
}
return 0;
}