题目1200:最大的两个数

来源:互联网 发布:电纸书推荐 知乎 编辑:程序博客网 时间:2024/05/16 19:47

// 一定要理解透题意!!!

#include<iostream>

using namespace std;
int main ()
{
    int n; 
    while(cin>>n){
        while(n--){
            int a[4][5],b[2][5],c[4][5];
            int jishu,num1=0,num2=0,fff,duihuan;
            int i,j,max,k;
            for(i=0;i<4;i++){               // 输入四行五列的数据 
                for(j=0;j<5;j++){
                    cin>>a[i][j];
                    c[i][j]=a[i][j];
                }
            }
            for(j=0;j<5;j++){
                for(i=0;i<4;i++){           //每列从大到小排序
                    max=a[i][j];
                    for(k=i;k<4;k++){
                        if(max<a[k][j]){
                            max=a[k][j];
                            a[k][j]=a[i][j];
                            a[i][j]=max;
                        }
                    }
                }            
            }
            for(j=0;j<5;j++){                // b[][]为每列的最大的两个数 
                for(i=0;i<2;i++){ 
                    b[i][j]=a[i][j];
                } 
            } 
            fff=0;
            while(fff!=5){
                // 判断最大的两个数的行数 
                for(i=0;i<4;i++){
                    if(c[i][fff]==b[0][fff]) { num1=i;break; }
                }             
                for(i=0;i<4;i++){
                    if(c[i][fff]==b[1][fff]){num2=i; break;}
                }
                if(num2<num1){                   // 行小的在前 
                    duihuan=b[0][fff];
                    b[0][fff]=b[1][fff];
                    b[1][fff]=duihuan;          
                }
                fff++;
            }
            for(i=0;i<2;i++){                // 输出每列最大的两个数 
                for(j=0;j<5;j++){
                    if(j==4) cout<<b[i][j]<<' '<<endl;
                    else     cout<<b[i][j]<<' ';     
                }   
            }
        }
    }
    return 0;
}
0 0
原创粉丝点击