计算机考研复试真题 最大的两个数

题目描述

    输入一个四行五列的矩阵,找出每列最大的两个数。

输入描述:

接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。

输出描述:

    可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。
    输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
示例1

输入

1  2   4  9  8
-1  4  9  8  8
#include<iostream>
using namespace std;
int main()
{
    int a[4][5], b[2][5];
    for (int i = 0; i < 4; i++)
    {//输入数据
        for (int j = 0; j < 5; j++)
            cin >> a[i][j];
    }
    for (int j = 0; j < 5; j++)
    {
        b[0][j] = a[0][j];
        int t=0;
        for (int i = 0; i < 4; i++)
        {
            if (b[0][j] < a[i][j])
            {
                b[0][j] = a[i][j];
                t = i;//找到最大的位置,并置为特殊值
            }
        }
        a[t][j] = -256;
    }
    for (int j = 0; j < 5; j++)
    {
        b[1][j] = a[0][j];
        int t = 0;
        for (int i = 0; i < 4; i++)
        {
            if (b[1][j] < a[i][j])
            {
                b[1][j] = a[i][j];
                t = i;
            }
        }
        for(int i=0;i<4;i++)
        {
            if(a[i][j]==-256&&i>t)//如果最大数据在次大的数据后面则将b数组对应的列换位置
            {
                i=b[1][j];
                b[1][j]=b[0][j];
                b[0][j]=i;
                break;
            }
        }
    }
    for (int i = 0; i < 2; i++)
        cout << b[i][0] << " " << b[i][1] << " " << b[i][2] << " " << b[i][3] << " " << b[i][4] << endl;
    return 0; 
}





/*
解题思路:将元素存入二维数组中,然后对每一列的元素用冒泡排序(稳定算法,能保证输出时要保留原矩阵的行列顺序),然后再按题意输出。
*/
/*#include<iostream>
using namespace std;

void bubbleSort(int arr[][5], int n) {  //冒泡排序,将矩阵中每列元素从小到大排列。
    for (int i = 0; i<n - 1; ++i) {
        bool flag = false;  //表示本趟冒泡是否发生交换的标志
        for (int j = n - 1; j>i; --j) {
            for (int k = 0; k<5; ++k)
                if (arr[j - 1][k]>arr[j][k]) {
                    int temp = arr[j - 1][k];
                    arr[j - 1][k] = arr[j][k];
                    arr[j][k] = temp;
                    flag = true;
                }
        }
        if (flag == false)
            return;
    }
}
int main() {
    int a[4][5];
    for (int i = 0; i<4; ++i)
        for (int j = 0; j<5; ++j)
            cin >> a[i][j];
    bubbleSort(a, 4);
    for (int i = 0; i<4; ++i)
        cout << a[3][i] << " ";
    cout << a[3][4] << endl;
    for (int i = 0; i<4; ++i)
        cout << a[2][i] << " ";
    cout << a[2][4] << endl;
    return 0;
}*/
12  9  8  7  0
7   8  9  7  0

输出

12 9 9 9 8 
7 8 9 8 8 

--------------------------------------------------------------------------------------------------------------------------


原文地址:https://www.cnblogs.com/parzulpan/p/9923008.html