Problem Description
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
Input
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
Output
按下列格式输出鞍点:
Array[i][j]=x
其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None。
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
Array[i][j]=x
其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None。
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
Example Input
3 3 1 2 3 4 5 6 7 8 9
Example Output
Array[0][2]=3
#include<stdio.h>
int main()
{
int i, j,k, m, n, f1, f2, a[20][20], max, maxj;
while(scanf("%d%d", &m, &n)!=EOF)
{
for(i = 0; i<m; i++)
{
for(j = 0; j<n; j++)
{
scanf("%d", &a[i][j]);
}
}
f2 = 0;
for(i = 0; i<m; i++)
{
max = a[i][0];
for(j = 0; j<n; j++)
{
if(a[i][j]>max)
{
max = a[i][j];
maxj = j;
}
}
for(k = 0,f1 = 1; k<m&&f1; k++)
{
if(max>a[k][maxj])
{
f1 = 0;
}
}
if(f1)
{
printf("Array[%d][%d]=%d\n",i,maxj,max);
f2 = 1;
}
}
if(!f2) printf("None\n");
}
return 0;
}
本文介绍了一种算法,用于在限定大小的二维数组中找到鞍点,即该元素在其所在行中最大,在其所在列中最小。文章通过具体示例展示了如何实现这一功能,并提供了一段完整的C语言代码。
447

被折叠的 条评论
为什么被折叠?



