独孤求非 2023-04-25 21:07 采纳率: 0%
浏览 58

c语言找鞍点(矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,假设矩阵中最多有一个鞍点,如果一个矩阵中有鞍点,则输出“Yes”,否则输出“No”。

c语言找鞍点(矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,假设矩阵中最多有一个鞍点,如果一个矩阵中有鞍点,则输出“Yes”,否则输出“No”。
提示:(1)在主函数中初始化一个矩阵,调用找鞍点函数;

‌ (2)定义一个找鞍点的函数;

‌ (3)在主函数中输出鞍点及其下标。

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-25 22:30
    关注
    #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;
    }
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 4月25日
  • 创建了问题 4月25日