Description给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度。请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行、列坐标。本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的。Input输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中:第一行是两个正整数m和n,分别表示该平面图的行数和列数。0
< m, n ≤ 1000接下来m行,每行n个非负整数,每个整数表示一个点的海拔高度。测试数据保证如果存在鞍点,则只存在一个鞍点。Output对每个测试用例输出一行:如果该图存在鞍点,则输出该鞍点的行、列坐标。否则输出
-1Sample Input5
675 99 47 95 17 6980 5 2 97 66 838 32 40 89 50 6648 44 21 66 23
1011 21 6 74 6 554 45 4 5 39 8 7 83 2 6 14 4 3
3Sample Output3
3-1我的代码:#include<stdio.h>
int main()
{
int M,N,i,j,k,p,min,put;
int a[50][50];
while(scanf("%d%d",&M,&N)!=NULL)
{
put=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{
min=a[i][0];
for(j=1;j<N;j++)
if(a[i][j]>min)min=a[i][j];
for(j=0;j<N;j++)
if(a[i][j]==min)
{
k=j;
p=0;
while(p<M&&a[p][j]>=min)
p++;
if(p>=M)
{
printf("%d %d\n",i,k);
put=1;
}
}
}
if(put==0)
printf("-1\n");
}
}
1 回答
- 1 回答
- 0 关注
- 1516 浏览
添加回答
举报
0/150
提交
取消