任务要求
题目描述:找出具有m
行n
列二维数组Array
的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10
。
编程要求
输入
输入数据有多行,第一行有两个数m
和n
,下面有m
行,每行有n
个数。
输出
按下列格式输出鞍点: Array[i][j]=x
其中x
代表鞍点,i
和j
为鞍点所在的数组行和列下标,我们规定数组下标从0
开始。 一个二维数组并不一定存在鞍点,此时请输出None
我们保证不会出现两个鞍点的情况,比如:
#include<stdio.h>
int main()
{
int x=0;int y=0;
int a[100][100];
scanf("%d %d",&x,&y);//输入行和列
int i,j,k,m=0,n=0;int max=0;int min=0;int temp=0;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
{
scanf("%d",&a[i][j]);//输入行和列的数字
}
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(a[i][m]<a[i][j])//找到每(i)行的最大值
{
m=j;
a[i][m]=a[i][j];
}
}
max=a[i][m];//赋值,后面用于判断
min=a[0][m];//存m列的最小值
for(k=0;k<x;k++)
if(a[k][m]<min)//找到该列的最小值
{
min=a[k][m];
n=k;
}
if(max==min)
{
temp=1;
printf("Array[%d][%d]=%d",n,m,a[n][m]);
break;
}
}
if(temp==0)
printf("NO");
return 0;
}
总结
得掌握二维数组的输入和输出,(两个for循环)灵活运用遍历,很多题目都会用到遍历,(也是循环),多练多刷一起加油吧!