pascal 马鞍数讲解

发表在    深坑帝国 10-15 14:15:43

1 2520 0

对于一个n*n的数阵(n行n列),如果数阵中某个数在它所在的行上是最小的数,而在它所在的列上是最大的数,则称该数为马鞍数,求给出的数阵中的马鞍数。

输入有n+1行,第一行一个整数n,表示n*n数阵。以下n行每行n个数,构成n*n数阵,同一行上每两个数之间用空格隔开。(n <= 100)

输出可能为多行,每一行表示一个马鞍数,每行三个数,第一个数表示该马鞍数所在的行,第二个数表示该马鞍数所在的列,第三个数是该马鞍数的值,如果不存在马鞍数,则输出‘no’。 

Sample Input 

5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8

Sample Output 

1 1 5

我做的
program p1111;
var i,j,n,m,l:longint;
pd,k:boolean;
a:array[1..100,1..100] of integer;
begin
read(n);
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
for i:=1 to n do
begin
l:=1;
m:=a[i,1];
pd:=true;
for j:=2 to n do
if m>a[i,j] then
begin
m:=a[i,j];
l:=j ;
end;
for j:=1 to n do
if m<a[j,i]

then pd:=false;
if pd=true
then writeln(i,' ',l,' ',a[i,l]);

end;

readln;readln;
end.
如果不存在马鞍数,则输出‘no’。 


登录或注册后发布评论
author avatar

黑客1

英勇黄铜Ⅲ 467荣誉值

10

0

1