pascal编程关于马鞍数的问题
解决时间 2021-04-23 21:50
- 提问者网友:末路
- 2021-04-23 17:12
描述
求一个5×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
1行1列上的数就是马鞍数。
输入
输入数阵中的25个整数
输出
如果该数阵有马鞍数,则输出其位置与数值,每个一行,输出格式为“(行号,列号):数值”;若无马鞍数,则输出“NO”
样例输入
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
样例输出
(1,1):5
这是题目
解答的时候只想到死算的方法,就是设25个变量
有没有更方便的方法?
pascal语言
最佳答案
- 五星知识达人网友:迟山
- 2021-04-23 18:35
var n,m,i,j,g,k,f,h,y:integer;a:array[0..10,0..10]of integer;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
for i:=1 to n do
for j:=1 to m do
begin
for g:=1 to n do
if a[i,j]>=a[g,j] then f:=f+1;
if f=n then
for k:=1 to m do
if a[i,j]<=a[i,k] then h:=h+1;
if h=m then writeln('(',i,',',j,')',':',a[i,j]) else y:=y+1;
f:=0;h:=0;
end;
if y=m*n then writeln('NO');
end.标程
全部回答
- 1楼网友:几近狂妄
- 2021-04-23 23:02
`告诉你主要思想就行了:就是先找每一行中的最小,记录他的值和他的列坐标,再在他的这一列当中,判断他是不是当前列中最大的一个,如果是,那么就输出,加个break,如果不是,则继续判断
- 2楼网友:神的生死簿
- 2021-04-23 22:37
用二维数组
a:array[1..5,1..5] of 1nteger
- 4楼网友:不如潦草
- 2021-04-23 19:47
只要把每行最小的数求出,每列最大的数求出,用一个二重循环比较一下,如果一个数既是行最小,又是列最大,那就是了,如果没有,就输出NO。
我要举报
大家都在看
推荐资讯