任务描述
题目描述:找出具有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
下面上代码
#include<stdio.h>
int main(void)
{
int m,n;//m行n列的矩阵
int Array[10][10];//定义一个矩阵
int i,j,b=0,c=0;
scanf("%d %d",&m,&n);//输入行和列数
for(i=0;i<m;i++)//输入矩阵
{
for(j=0;j<n;j++)
{
scanf("%d",&Array[i][j]);
}
}
int max=0;//用于比较每行最大的值
int min=0;//用于比较每行中最小的值
for(i=0;i<m;i++)
{
max=Array[i][0];
for(j=0;j<n;j++)//找出第i行最大值
{
if(Array[i][j]>max)
{
max=Array[i][j];
b=j;//将最大值的列数赋值给b
}
}
min=Array[0][b];
for(int k=0;k<m;k++)//找出每行最小值
{
if(Array[k][b]<min)
{
min=Array[k][b];
c=k;//将最小的行数赋值给c
}
}
if(min==max)//判断该点是否为鞍点
{
printf("Array[%d][%d]=%d",c,b,Array[c][b]);
break;//if ture,输出鞍点
}
}
if(min!=max)//根据题目要求,没有鞍点输出None
{
printf("None");
}
return 0;
}
输入:
3 3
1 4 3
4 5 6
7 8 9
输出样例:
有天赋的人不一定成功,但努力的人一定会成功。2023加油!
更多推荐
C语言求鞍点
发布评论