寻找马鞍点的c语言算法(数据结构之数组)

本文介绍了一种算法用于在二维数组中寻找马鞍点,即在一个维度上是最小值,在另一个维度上为最大值的元素。通过三次循环和一个标志量,该算法能够高效地定位到马鞍点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >







从一个二维数组中,寻找马鞍点,马鞍点的特点就是在一个维度上是最小值,在另一个维度上为最大值,就马鞍中间的那个点,需要进行两次比较,一个维度的比较找到最小值,再把此最小值跟另一个维度上的数比较是否为最大值来找到马鞍点,需要三个循环变量,一个标志量。

void Get_Saddle(int A[m][n])
{
	int i,j,flag,min,k;
	for(i=0;i<m;i++)
	{
		min=A[i][0];
		for(j=0;j<n;j++)
		{
			if(A[i][j]<min)
				min=A[i][j];/*求第i行的最小值*/
			for(j=0;j<n;j++)
				if(A[i][j]==min)   /* 判断此最小值是否为马鞍点*/
				{    flag==1;
					 for(k=0;k<n;k++)
						 if(min<A[k][j]) flag=0;
					 if(flag)
						 printf("Found a saddle element !\n A[%d][%d]=%d",i,j,A[i][j]);
				}
      
	    }
	}
		printf("\n");

}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值