C语言求m*n矩阵的鞍点
时间: 2024-01-17 10:12:32 浏览: 102
鞍点是指矩阵中某个元素,既是所在行的最大值,又是所在列的最小值。在C语言中,可以通过双重循环遍历矩阵的每个元素,然后对每个元素进行判断。
下面是一个求m*n矩阵鞍点的示例代码:
```c
#include <stdio.h>
int main()
{
int m, n;
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &m, &n);
int matrix[m][n];
int i, j, row_max, col_min, saddle_point_flag = 0;
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
printf("请输入第%d行第%d列的数值:", i+1, j+1);
scanf("%d", &matrix[i][j]);
}
}
for(i = 0; i < m; i++)
{
row_max = matrix[i][0];
int max_col_index = 0;
for(j = 1; j < n; j++)
{
if(matrix[i][j] > row_max)
{
row_max = matrix[i][j];
max_col_index = j;
}
}
col_min = matrix[0][max_col_index];
for(int k = 1; k < m; k++)
{
if(matrix[k][max_col_index] < col_min)
{
col_min = matrix[k][max_col_index];
}
}
if(row_max == col_min)
{
printf("鞍点坐标为(%d, %d),值为%d\n", i+1, max_col_index+1, row_max);
saddle_point_flag = 1;
}
}
if(saddle_point_flag == 0)
{
printf("该矩阵不存在鞍点\n");
}
return 0;
}
```
在这个示例代码中,我们首先读入矩阵的行数和列数,然后通过双重循环读入矩阵的每个元素。接下来,我们使用两个for循环分别遍历每一行和每一列,找到每一行的最大值和最大值所在的列,以及每一列的最小值。最后,我们判断每一行的最大值是否等于其所在列的最小值,如果是,就输出鞍点的坐标和值。如果没有找到鞍点,就输出不存在鞍点的提示。
阅读全文
相关推荐














