请输入您要查询的百科知识:

 

词条 马鞍数
释义

马鞍数

马鞍数,是指数阵n*m中在行上最小而在列上最大的数。如:数阵n*m,其中 n=5 m=5

1 6 7 8 9

4 5 6 7 8

3 4 5 2 1

2 3 4 9 0

5 6 7 6 8

则第5行第1列的数字“5”即为该数阵的一个马鞍数。

查找数阵中的马鞍数

对于任一数阵n*m,如数阵中存在马鞍数则输出其在数阵中的位置,否则提示数阵不存在马鞍数(点)。以下用C实现特殊的数阵情形,问题描述:求一个n×n数阵中的马鞍数,输出它的位置。一般情形只需仿照以下算法实现即可。程序编译运行及输入输出结果如右图所示:-----------------------------------c语言实现-------------------------------------

#include<stdio.h>

void main(){

int p[30][30];//数阵最大为30*30

int n,i,j;

int min,x,y;

int exist;

printf("请输入n*n数阵中n的大小:如5\");

scanf("%d",&n);

printf("请输入该%d*%d数阵中每个元素的大小,如若为2*2数阵,输入2,3,4,5\",n,n);

for(i=1;i<=n;i++){

for(j=1;j<=n;j++)

scanf("%d,",&p[i][j]);

}

for(i=1;i<=n;i++){

for(j=1;j<=n;j++){

printf("%-3d ",p[i][j]);

}

printf("\");

}

for(i=1;i<=n;i++){

min=p[i][1];

x=i;

y=1;

//行最小

for(j=1;j<=n;j++){

if(p[i][j]<min){

min=p[i][j];

y=j;

}

}

//列最大

for(j=1;j<=n;j++){

if(p[x][y]<p[j][y])

break;

}

if(j>n){

printf("马鞍数在该数阵中的位置为(行,列):(%d,%d)\",x,y);

exist=1;

}

}

if(exist==0)

printf("该数阵中不存在马鞍数!\");

}

-----------------------------------c语言实现-------------------------------------

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 16:56:59