词条 | 马鞍数 |
释义 | 马鞍数马鞍数,是指数阵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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。