题目1200:最大的两个数

来源:互联网 发布:安卓手机php编程 编辑:程序博客网 时间:2024/06/05 20:46
题目1200:最大的两个数

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:3708

解决:966

题目描述:

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

输入:

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

输出:

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

样例输入:
11  2   4  9  8-1  4  9  8  812  9  8  7  07   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
 
intmain(){
intb[25],a[4][5];
intn,j,i,k;
intmax1,max2,x1,x2,y1,y2;
intcount=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");
 
}
return0;
 
}
 
/**************************************************************
    Problem: 1200
    User: kaoyandaren123
    Language: C
    Result: Wrong Answer
****************************************************************/
0 0