zoukankan      html  css  js  c++  java
  • 计算机考研复试真题 最大的两个数

    题目描述

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

    输入描述:

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

    输出描述:

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

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


  • 相关阅读:
    HITCON Training lab14 magic heap 堆技巧unsroted bin attack
    堆技巧Unsorted Bin Attack
    2014-hack-lu-oreo 堆技巧house of spirit
    极客时间JVM虚拟机
    堆技巧 housr_of_spirit 绕过检查源码分析
    babyheap_0ctf_2017 堆技巧 fastbin-attack
    gyctf_2020_borrowstack wp
    SqlServer Where后面Case When语句的写法
    EasyUI TextBox的onkeypress事件
    SQL
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9923008.html
Copyright © 2011-2022 走看看