求矩阵的鞍点及其对应的下标。

这篇博客介绍了两种方法来寻找3×4矩阵的鞍点,即行最大值同时也是列最大值的元素。第一种方法是逐行找到最大值,再在对应列中确认最大值,第二种方法是分别找出所有行和列的最大值进行比较。代码示例展示了如何用C语言实现这两种方法。
摘要由CSDN通过智能技术生成

求该矩阵的鞍点下标的值。

有一个3×4的矩阵如下
{{-32,8,10,2},
{9,23,-23,-6},
{8,2,-11,7}}
鞍点:指的是在一行中最大的数同时在对应的这一列中也是最大的数。

方法一

找到一行中最大的一个值,然后,再确定这个行最大值的列数,然后再寻找这一列中最大的值,最后比较列最大值是否跟行最大值相等。如果相等,就说明这个数是鞍点,最后输入这个数,及其对应的下标。

 #include <stdio.h> 
 int main(int argc, const char *argv[])
 {
     int st[3][4]={{-32,8,10,2},\
                   {9,23,-23,-6},\
                   {8,2,-11,7}},i,j,max_l,max_h;
     for(i=0;i<3;i++)
     {
         max_l=0;
         for(j=0;j<4;j++)
         {
             if(st[i][max_l]<st[i][j])
                 max_l=j;//1 
         }
         max_h=0;
         for(j=0;j<3;j++)
         {
             if(st[max_h][max_l]<st[j][max_l])//st[0][1]<st[1][1]
                 max_h=j;//1    st[1][1]<st[2][1]
         }
         if(max_h == i)//i=1                                           
             printf("%d  %d %d\n",st[i][max_l],i,max_l);
     } 
     return 0;
 }                                                               

方法二

第二种方法就是,分别先找出每一行,每一列中的最大值,最后比较行最大值和列最大值是否相等。相等就输出该鞍点及其对应的下标。

#include <stdio.h>
int main(int argc, const char *argv[])
{
	int i=0,j=0;
	int str[3][4]={-32,8,10,2,9,23,-23,-6,8,2,-11,7};
	int max_h[3]={0};
	int max_l[4]={0};
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if(str[i][j]>max_h[i])
			{
				max_h[i]=str[i][j];
			}
		}
	}
	for(j=0;j<4;j++)
	{
		for(i=0;i<3;i++)
		{
			if(str[i][j]>max_l[j])
			{
				max_l[j]=str[i][j];
			}
		}
	}
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if(max_h[i]==max_l[j])
			{
				printf("%d %d %d\n",max_h[i],i,j);
			}
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值