在看到这道题的时候我想到的就是同时找到一个某一行的最大值以及这个最大值在对应的列中是否为这一列的最小值,然后我就一直在思考如何解决这个问题,但是我没有想到真正解决这个问题的思路,之后在我询问小爱同学后知道了这道题的思路,小爱同学给了一串代码,然后我总结了以下这个思路并且重新根据这个思路写了一段代码。
这道题的思路是:1.遍历每一行求该行的最大值;
2.固定该最大值所在的列,然后依次遍历行,求该列中最大值所处的行;
3.将该行和1中的行进行比较,若相同则输出该数所在的行,列,以及对应的值;
4.最后判断是否存在这样的数;
该思路的代码为:
#include<stdio.h>
int main(){
int a[5][5];
int i,j,k,rowmax,colmin,flag=0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<5;i++){
rowmax=0;
for(j=0;j<5;j++){
if(a[i][rowmax]<a[i][j])
rowmax=j;
}
colmin=i;
for(k=0;k<5;k++){
if(a[k][rowmax]<a[colmin][rowmax])
colmin=k;
}
if(colmin==i){
printf("%d %d %d",i+1,rowmax+1,a[i][rowmax]);
flag=1;
break;
}
}
if(flag==0) printf("not found\n");
return 0;
}