鞍点c语言程序设计,C语言之鞍点的查找

鞍点(Saddle point)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。

接下来,我们直接上代码:

#include

#define M 4

#define N 3

int main()

{

int i,j,a[M][N],b,c,d,m;      //d判断是否有鞍点的变量,m为在该行的最大值,b,c记录序号。

printf("请输入%d*%d个数",M,N);

for(i=0;i

for(j=0;j

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

printf("矩阵为\n");

for(i=0;i

{

for(j=0;j

printf("%-5d",a[i][j]);

printf("\n");

}

for(i=0;i

{

m=a[i][0];

b=i,c=0;

for(j=0;j

if(a[i][j]>m)

{

m=a[i][j];

b=i,c=j;

}

d=1;

for(j=0;j

{

if(m>a[j][c])

{d=0;break;}    //如果有元素比m小,那么当前点肯定不是鞍点 ,跳出循环,开始下一行的判断

}

if(d==1)

{

printf("鞍点为a[%d][%d]=%d",b,c,a[b][c]);

//break;              //不用跳出,因为鞍点可能还有,不止一个

}

}

//if(d!=1)printf("此矩阵无鞍点!");    //这句有问题了,比如第一行有鞍点d=1了,但

//第三行没有鞍点, 此时d=0,用了这句岂不是整个矩阵没有鞍点?可以通过记录鞍点的个数来判断

}

0b1331709591d260c1c78e86d0c51c18.png

你可能感兴趣的:(鞍点c语言程序设计)