输入一个四行五列的矩阵,找出每列最大的两个数。
输入第一行包括一个整数n(1<=n<=1000),接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。难点是在:
输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
while (~scanf("%d",&n))
{
for (int ii = 0; ii < n; ++ii)
{
int a[4][5] = { 0 };
for (int i = 0; i <4; ++i)
for (int j = 0; j < 5; ++j)
scanf("%d", &a[i][j]);
int book[100] = { 0 }, max1, max2, t1, t2, k = 0;
for (int i = 0; i < 5; ++i)
{
int maxx = -999, t1, t2;
for (int j = 0; j < 4; ++j)
{
if (a[j][i] > maxx)
{
maxx = a[j][i];
t1 = j;
}
}
max1 = maxx;
maxx = -999;
for (int j = 0; j < 4; ++j)
{
if (a[j][i] > maxx&&j != t1)
{
maxx = a[j][i];
t2 = j;
}
}
max2 = maxx;
if (t1 < t2)
{
book[k++] = a[t1][i];
book[k++] = a[t2][i];
}
else
{
book[k++] = a[t2][i];
book[k++] = a[t1][i];
}
}
for (int i = 0; i < k; i += 2)
{
printf("%d ", book[i]);
}
printf("\n");
for (int i = 1; i < k; i += 2)
{
printf("%d ", book[i]);
}
printf("\n");
}
}
return 0;
}