鞍点怎么用c语言来写

四个点都是鞍点
中间点任意点是鞍点
无鞍点
三道题应该分别都怎么做

img

你要写这个,得数学底子好,偏导数掌握多少?

一下三道题,建议设置酬金,我先帮你写出代码来吧

1、四个角分别是鞍点

#include <stdio.h>

int main() {
    int matrix[3][3] = {{10, 20, 30}, {15, 25, 35}, {30, 40, 50}};
    int i, j, max, min;
    int is_saddle_found = 0;
    
    // 打印原始矩阵
    printf("Matrix:\n");
    for (i = 0; i < 3; ++i) {
        for (j = 0; j < 3; ++j) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }
    
    // 寻找鞍点
    for (i = 0; i < 3; ++i) {
        max = matrix[i][0];
        for (j = 1; j < 3; ++j) {
            if (matrix[i][j] > max) {
                max = matrix[i][j];
            }
        }
        for (j = 0; j < 3; ++j) {
            min = matrix[0][j];
            for (int k = 1; k < 3; ++k) {
                if (matrix[k][j] < min) {
                    min = matrix[k][j];
                }
            }
            if (matrix[i][j] == max && matrix[i][j] == min) {
                printf("Saddle Point: (%d, %d)\n", i, j);
                is_saddle_found = 1;
            }
        }
    }
    
    if (!is_saddle_found) {
        printf("No Saddle Point Found\n");
    }
    
    return 0;
}

2、中间任意点是鞍点:

#include <stdio.h>

int main() {
    int matrix[5][5] = {{10, 20, 30, 40, 50}, {15, 25, 35, 45, 55}, {20, 30, 40, 50, 60}, {25, 35, 45, 55, 65}, {30, 40, 50, 60, 70}};
    int i, j, max, min;
    int is_saddle_found = 0;
    int mid_index = sizeof(matrix) / sizeof(matrix[0]) / 2;
    
    // 打印原始矩阵
    printf("Matrix:\n");
    for (i = 0; i < 5; ++i) {
        for (j = 0; j < 5; ++j) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }
    
    // 检查中间点是否为鞍点
    max = matrix[mid_index][0];
    for (j = 1; j < 5; ++j) {
        if (matrix[mid_index][j] > max) {
            max = matrix[mid_index][j];
        }
    }
    min = matrix[0][mid_index];
    for (i = 1; i < 5; ++i) {
        if (matrix[i][mid_index] < min) {
            min = matrix[i][mid_index];
        }
    }
    if (matrix[mid_index][mid_index] == max && matrix[mid_index][mid_index] == min) {
        printf("Saddle Point: (%d, %d)\n", mid_index, mid_index);
        is_saddle_found = 1;
    }
    
    if (!is_saddle_found) {
        printf("No Saddle Point Found\n");
    }
    
    return 0;
}

3、无鞍点

#include <stdio.h>

int main() {
    int matrix[4][4] = {{10, 20, 30, 40}, {15, 25, 35, 45}, {20, 30, 40, 50}, {25, 35, 45, 55}};
    int i, j, max, min;
    int is_saddle_found;
    
    // 打印原始矩阵
    printf("Matrix:\n");
    for (i = 0; i < 4; ++i) {
        for (j = 0; j < 4; ++j) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }
    
    // 检查每个点是否为鞍点并输出结果
    is_saddle_found = 0;
    for (i = 0; i < 4; ++i) {
        for (j = 0; j < 4; ++j) {
            max = matrix[i][0];
            for (int k = 1; k < 4; ++k) {
                if (matrix[i][k] > max) {
                    max = matrix[i][k];
                }
            }
            min = matrix[0][j];
            for (int k = 1; k < 4; ++k) {
                if (matrix[k][j] < min) {
                    min = matrix[k][j];
                }
            }
            if (matrix[i][j] == max || matrix[i][j] == min) {
                is_saddle_found = 1;
            }
        }
    }
    if (!is_saddle_found) {
        printf("No Saddle Point Found\n");
    }
    
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^