发表在 深坑帝国 10-15 14:15:43
对于一个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’。