- 题目
求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语句。