题目描述:输入一个整数矩阵,求每一列最大的两位数。若有相同的数值,取行值小的数。
输出最大的两位数(按格式输出。
解题思路:另开一个d[2*5]数组存储数据
从上到下遍历原矩阵,每次将当前数字与d数组中对应列的两个元素比较,保存最大的两个数。
而且为了使得输出时是按照保存的顺序,每次新入的元素将在d[1][j]处,将原有元素网上挪
有一个问题:我调代码的时候总是超时,后来才发觉是漏了写EOF。。。。。。。。。。。。。。太傻了啊天
1 #include<stdio.h> 2 #include<limits.h> 3 int main() 4 { 5 int a,b,c[4][5],d[2][5]; 6 while(scanf("%d%d%d%d%d",&c[0][0],&c[0][1],&c[0][2],&c[0][3],&c[0][4])!=EOF) 7 { 8 int i,j; 9 for(i=1; i<4; i++) 10 { 11 for(j=0; j<5; j++) 12 scanf("%d",&c[i][j]); 13 } 14 for(i=0; i<2; i++) 15 { 16 for(j=0; j<5; j++) 17 d[i][j]=INT_MIN;//最小化 18 } 19 for(i=0; i<4; i++) 20 { 21 for(j=0; j<5; j++) 22 { 23 if(c[i][j]>d[0][j]||c[i][j]>d[1][j]) 24 { 25 if(d[0][j]>d[1][j]) d[1][j]=c[i][j]; 26 else 27 { 28 d[0][j]=d[1][j]; 29 d[1][j]=c[i][j]; 30 } 31 } 32 } 33 } 34 for(i=0; i<=1; i++) 35 { 36 for(j=0; j<5; j++) 37 if (j!=4)printf("%d ",d[i][j]); 38 else printf("%d ",d[i][j]); 39 } 40 } 41 return 0; 42 }