Java教程

模拟

本文主要是介绍模拟,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
输入一个四行五列的矩阵,找出每列最大的两个数。

输入描述:

每个用例包含四行,每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。

输出描述:

    可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。     输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
#include <bits/stdc++.h>
using namespace std;

int data1[4][5];
int res[5][2];

int main(){

    while(scanf("%d",&data1[0][0])!=EOF){
        memset(res,-1,10*sizeof(int));
        //cout<<res[0][1]<<" "<<res[0][2]<<endl;;
        int i=1;
        while(i<20){
            scanf("%d",&data1[i/5][i%5]);
            //cout<<i/4<<" "<<i%5<<endl;
            i++;
        }
        /*for(i=0;i<4;i++){
            for(int j=0;j<5;j++){
                cout<<data[i][j]<<" ";
            }
            cout<<endl;
        }*/
        for(i=0;i<4;i++){
            for(int j=0;j<5;j++){
                if(res[j][0]==-1){
                    res[j][0]=i;
                    //cout<<data[i][j]<<"fangl"<<endl;
                }
                else if(res[j][1]==-1){
                    res[j][1]=i;
                    //cout<<data[i][j]<<"fangl1"<<endl;
                }
                //else if(data[i][j]==data[res[j][0]][j]||data[i][j]==data[res[j][1]][j])
                  //  continue;
                else if(data1[i][j]>data1[res[j][0]][j]&&data1[i][j]>data1[res[j][1]][j]){
                    if(data1[res[j][0]][j]>data1[res[j][1]][j]){
                        res[j][1]=i;
                    }
                    else
                        res[j][0]=i;
                }
                else if(data1[i][j]>data1[res[j][0]][j]){
                    res[j][0]=i;
                    //cout<<data[i][j]<<"fhuanl"<<endl;
                }
                else if(data1[i][j]>data1[res[j][1]][j]){
                    res[j][1]=i;
                    //cout<<data[i][j]<<"fang333l"<<endl;
                }
            }
        }
        int temp;
        for(i=0;i<5;i++){
            if(res[i][0]>res[i][1]){
                temp=res[i][0];
                res[i][0]=res[i][1];
                res[i][1]=temp;
            }
        }
        for(i=0;i<2;i++){
            for(int j=0;j<5;j++){
                //cout<<res[j][i]<<"hhh"<<endl;
                printf("%d ",data1[res[j][i]][j]);
            }
            printf("\n");
        }
    }
    return 0;
}

 

这篇关于模拟的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!