四个点都是鞍点
中间点任意点是鞍点
无鞍点
三道题应该分别都怎么做
你要写这个,得数学底子好,偏导数掌握多少?
一下三道题,建议设置酬金,我先帮你写出代码来吧
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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:声明的时候,可以省略结构体的名字
struct//这里的tag被省略了
{
int a;
int b;
}x;
因为省略了结构体类型名,所以我们不能在主函数中定义结构体变量了
在声明后面定义也是唯一的方式