头歌题目-数组
任务描述
题目描述:找出具有m
行n
列二维数组Array
的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10
。
相关知识(略)
编程要求
输入
输入数据有多行,第一行有两个数m
和n
,下面有m
行,每行有n
个数。
输出
按下列格式输出鞍点: Array[i][j]=x
其中x
代表鞍点,i
和j
为鞍点所在的数组行和列下标,我们规定数组下标从0
开始。 一个二维数组并不一定存在鞍点,此时请输出None
我们保证不会出现两个鞍点的情况,比如: 3 3
1 2 3
1 2 3
3 6 8
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:
Array[0][2]=3
开始你的任务吧,祝你成功!
#define N 10
#include <stdio.h>
int Maxcol(int a[][N],int n,int row){
int i,maxcol=0;
for(i=1;i<n;i++)
if (a[row][i]>a[row][maxcol]) maxcol=i;
return maxcol;
}
int Minrow(int a[][N],int m,int col){
int i,minrow=0;
for(i=1;i<m;i++)
if (a[i][col]<a[minrow][col]) minrow=i;
return minrow;
}
int main(){
int m,n,i,j;
int maxcol,minrow;
int a[N][N];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++) for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++){
maxcol=Maxcol(a,n,i);
minrow=Minrow(a,m,maxcol);
if (i==minrow){
printf("Array[%d][%d]=%d",i,maxcol,a[i][maxcol]);
break;
}
}
if(i>=m) printf("None");
}