c语言找鞍点(矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,假设矩阵中最多有一个鞍点,如果一个矩阵中有鞍点,则输出“Yes”,否则输出“No”。
提示:(1)在主函数中初始化一个矩阵,调用找鞍点函数;
(2)定义一个找鞍点的函数;
(3)在主函数中输出鞍点及其下标。
c语言找鞍点(矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,假设矩阵中最多有一个鞍点,如果一个矩阵中有鞍点,则输出“Yes”,否则输出“No”。
提示:(1)在主函数中初始化一个矩阵,调用找鞍点函数;
(2)定义一个找鞍点的函数;
(3)在主函数中输出鞍点及其下标。
#include <stdio.h>
// 找矩阵的鞍点
void findSaddlePoint(int a[][100], int m, int n) {
int i, j, max, min, row = 0, col = 0;
for (i = 0; i < m; i++) {
// 找每一行的最大值
max = a[i][0];
for (j = 1; j < n; j++) {
if (a[i][j] > max) {
max = a[i][j];
col = j; // 记录最大值的列数
}
}
// 判断最大值是否为该列的最小值
min = a[0][col];
for (j = 1; j < m; j++) {
if (a[j][col] < min) {
min = a[j][col];
row = j; // 记录最小值的行数
}
}
// 如果该点为鞍点,输出结果
if (a[i][col] == a[row][col]) {
printf("Yes\n");
printf("鞍点的位置是:%d行%d列, 鞍点的值为:%d\n", row, col, a[row][col]);
return;
}
}
// 若无鞍点,输出结果
printf("No\n");
}
int main() {
int a[100][100], m, n, i, j;
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &m, &n);
printf("请输入矩阵:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
// 找矩阵的鞍点
findSaddlePoint(a, m, n);
return 0;
}