求N阶矩阵鞍点的位置和个数

  • 题目
    求N阶矩阵鞍点的位置和个数
    以四阶矩阵为例
  • 解题思路
    鞍点是一个数在所在行中是最大值,在所在列中是最小值,所以我先求每行中最大值的数,再验证这个数在其列是不是最小值。
#include <stdio.h>
#define N 5
void main()
{
	
	//定义一个N阶矩阵以及需要的相关变量//
		int a[N][N];
	    int i,j,m,k=0,n=0,temp;

    //输入N阶矩阵内元素的值//
	    for(i=0;i<N;i++)
		    for(j=0;j<N;j++)
			    scanf_s("%d",&a[i][j]);

	    for(i=0;i<N;i++)
	    {
		   temp=a[i][0];//初定义temp为每行中第一个数//
		   m=0;//m是每行中最大值的数所在的列值//
		   for(j=1;j<N;j++)
		   {
			   if(temp<a[i][j])
			      temp=a[i][j];//寻找每行的最大值//
			   m=j;//将列值赋给m//
		   }
		   for(j=0;j<N;j++)
			   if(temp>a[i][j])//验证该数是否为该列的最小值//
			 	  k++;
		   if(k==0)
		   {
			  printf("(%d,%d)\n",i,m);//如果确实是,输出该数的行数和列数//
			  n++;//每多一个鞍点,n+1//
		   }
		   k=0;
	    }
	    printf("总个数为%d\n",n);//输出该矩阵的鞍点的总个数//
	 
}

总结:做题前要有具体的思路,要不然调试上百次也不一定对,思路要清晰,熟练使用数组,for循环,if语句。

猜你喜欢

转载自blog.csdn.net/smilezyf/article/details/90547914
今日推荐