题目1200:最大的两个数

    xiaoxiao2021-03-25  94

    题目1200:最大的两个数

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:3708

    解决:966

    题目描述:

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

    输入:

        输入第一行包括一个整数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 提示:

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

    注解:九度OJ里的一道题,花了好长时间做,但还是没有AC,先保存在这儿,改天有思路了再仔细思考一下

    有bug的代码: #include <stdio.h> #include <limits.h> #define MAXNUM 105   int main(){ int b[25],a[4][5]; int n,j,i,k; int max1,max2,x1,x2,y1,y2; int count=0,col=0;   scanf ( "%d" ,&n);       for (k=0;k<n;k++){      for (i=0;i<4;i++)           for (j=0;j<5;j++)          scanf ( "%d" ,&a[i][j]); count=0; for (j=0;j<=4;j++){          max1=a[0][j];          x1=0,y1=j;      for (i=1;i<=3;i++){            if (a[i][j]>max1){              max1=a[i][j];              x1=i,y1=j;          }              } b[count++]=max1; a[x1][y1]=INT_MIN;         max2=a[0][j];             for (i=1;i<=3;i++){            if (a[i][j]>max2){              max2=a[i][j];            }              } b[count++]=max2;      }          for (i=0;i<count;i++){              if (i%2==0)                  printf ( "%d " ,b[i]);      }       printf ( "\n" );       for (i=0;i<count;i++){              if (i%2!=0)                  printf ( "%d " ,b[i]);      }       printf ( "\n" );   } return 0;   }   /**************************************************************      Problem: 1200      User: kaoyandaren123      Language: C      Result: Wrong Answer ****************************************************************/
    转载请注明原文地址: https://ju.6miu.com/read-15470.html

    最新回复(0)