zoukankan      html  css  js  c++  java
  • 最大的两个数

    最大的两个数

    题目描述:

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

    输入:

        输入第一行包括一个整数n(1<=n<=1000),接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。

    输出:

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

    样例输入:
    1
    1  2   4  9  8
    -1  4  9  8  8
    12  9  8  7  0
    7   8  9  7  0
    样例输出:
    12 9 9 9 8 
    7 8 9 8 8 
    提示:

    每个数字后面都要输出一个空格

    Code:
    #include <iostream>
    #include <algorithm>
    #include <vector>
     
    using namespace std;
     
    int main()
    {
        int arr[6][6];
        int n;
        while(cin>>n){
            while(n--){
                for(int i=1;i<=4;++i){
                    for(int j=1;j<=5;++j){
                        cin>>arr[i][j];
                    }
                }
                int first,second;
                vector<int> tmpVec;
                vector<int> ansVec;
                for(int i=1;i<=5;++i){
                    tmpVec.clear();
                    for(int j=1;j<=4;++j){
                       tmpVec.push_back(arr[j][i]);
                    }
                    sort(tmpVec.begin(),tmpVec.end());
                    first=tmpVec[3];
                    second=tmpVec[2];
                    bool notFoundFirst=false;
                    bool notFoundSecond=false;
                    int index;
                    for(int j=1;j<=4;++j){
                        if(arr[j][i]==first||arr[j][i]==second){
                            ansVec.push_back(arr[j][i]);
                            if(arr[j][i]==first){
                                notFoundFirst=true;
                            }else{
                                if(arr[j][i]==second){
                                    notFoundSecond=true;
                                }
                            }
                            index=j;
                            break;
                        }
                    }
                    if(notFoundFirst==true){
                        for(int j=index+1;j<=4;++j){
                            if(arr[j][i]==second){
                                ansVec.push_back(arr[j][i]);
                                break;
                            }
                        }
                    }
                    if(notFoundSecond==true){
                        for(int j=index+1;j<=4;++j){
                            if(arr[j][i]==first){
                                ansVec.push_back(arr[j][i]);
                                break;
                            }
                        }
                    }
                }
                cout<<ansVec[0]<<" "<<ansVec[2]<<" "<<ansVec[4]<<" "<<ansVec[6]<<" "<<ansVec[8]<<" "<<endl;
                cout<<ansVec[1]<<" "<<ansVec[3]<<" "<<ansVec[5]<<" "<<ansVec[7]<<" "<<ansVec[9]<<" "<<endl;
            }
        }
        return 0;
    }
     
    /**************************************************************
        Problem: 1200
        User: lcyvino
        Language: C++
        Result: Accepted
        Time:40 ms
        Memory:1520 kb
    ****************************************************************/
  • 相关阅读:
    Visual Studio ------ 多项目启动
    windows ------ 系统激活 win10
    Java ----- 递归与迭代
    SpringCloud:初识(微服务与SpringCloud)
    The server time zone value '&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;' is unrecognized or represents more than one time zone.
    Solr:SolrJ(增删改查)
    Solr:后台管理界面的使用(管理索引库、导入数据库数据、查询)
    Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)
    Vue:v-model的使用
    Vue:循环遍历(v-for)
  • 原文地址:https://www.cnblogs.com/Murcielago/p/4198182.html
Copyright © 2011-2022 走看看