算法题,输入一个矩阵,输出每一列最大的两个数

#include <iostream>
using namespace std;

void search(int a[][5] , int n){  //一个5行5列的矩阵
        int max[2][5];   //分别表示前一个最大的数和后一个最大的数
        int index[2];
        index[0] = index[1] = 0;  //用来记录两个最大数的索引
        for(int i=0;i<5;i++){
                //对每一列都要找那个数
                max[0][i] = a[0][i];
                max[1][i] = a[0][i];
                index[0] = index[1] = 0;
                for(int j=1;j<n;j++){
                        //遍历每一行
                        //max[0]记录次大的数
                        //max[1]记录最大的数
                        if(a[j][i] > max[0][i] && a[j][i] > max[1][i]){
                                if(index[1] != 0){   //这个时候要先把max[1]的值给max[0]
                                        max[0][i] = max[1][i];
                                        index[0] = index[1];
                                }
                                max[1][i] = a[j][i];
                                index[1] = j;
                        }
                        else if(a[j][i] > max[0][i]){
                                //这个时候要把max[1]的值给max[0]

                                max[0][i] = a[j][i];
                                index[0] = j;
                        }
                }
                //接下来判断哪个行号大,大的在下面
                if(index[0] > index[1]){   //交换max的值
                        int temp = max[0][i];
                        max[0][i] = max[1][i];
                        max[1][i] = temp;
                }
        }
        for(int i=0;i<5;i++)
                cout<<max[0][i]<<" ";
        cout<<endl;
        for(int i=0;i<5;i++)
                cout<<max[1][i]<<" ";
        cout<<endl;
}

int main(){
        int a[4][5];
        for(int i=0;i<4;i++)
                for(int j=0;j<5;j++)
                        cin>>a[i][j];
        search(a,4);
}

运行结果:

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/83066083
今日推荐