C语言 矩阵/数组 马鞍点查找
C语言矩阵/数组马鞍点查找题目:在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。编程思维首先我们需要寻找行最大值,然后确定行最大值所在列。然后再所在列寻找最小值。根据判断两次找到的数是否相等,行列信息是否一致来确定是否是马鞍点。然后继续进行查找下一行是否有马鞍点,直至所有行都查询结束。源程序#include <stdio.h>#include...
·
C语言 矩阵/数组 马鞍点查找
题目:
在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。
编程思维
首先我们需要寻找行最大值,然后确定行最大值所在列。然后再所在列寻找最小值。根据判断两次找到的数是否相等,行列信息是否一致来确定是否是马鞍点。然后继续进行查找下一行是否有马鞍点,直至所有行都查询结束。
源程序
#include <stdio.h>
#include <stdlib.h>
#define N 10 //用于设定初始二维数组的大小
void Search_point(char num[10][10],int n)
{
int Max = 0,Min = 0,temp_l = 0,temp_h = 0;
int flag;
for(int i = 0;i < n;i++)
{
Max = num[i][0];
for(int j = 0;j < n;j++)//寻找行最大。记录最大值所在列
{
if(num[i][j] > Max)
{
Max = num[i][j];
temp_l = j;
Min = num[i][j];
}
}
for(int k = 0;k < n;k++)//寻找列最小。 记录最小值所在行
{
if(num[k][temp_l] < Min)
{
Min = num[k][temp_l];temp_h = k;
}
}
if(Min == Max && Max == num[temp_h][temp_l])//判断两次查找到的数据是否相等,且行列信息是否一致。
{
printf("马鞍点位置为第%d行,第%d列",temp_h+1,temp_l+1);
flag = 1;
break;
}
}
if(flag == 0)printf("不存在马鞍点");
}
int main() {
char num[N][N] = {};
char n;
int i,j,k;
printf("请输入矩阵的阶数\n");
scanf("%d",&n);
printf("请输入具体数值\n");
for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
scanf("%d",&num[i][j]);
}
}
Search_point(num,n);
return 0;
}
运行结果
更多推荐


所有评论(0)