题目描述 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。 本题要求编写程序,求一个给定的n阶方阵的鞍点。 输入 输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。 输出 输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。使用C语言不用函数而是使用二维数组
时间: 2024-03-12 14:44:34 浏览: 259
矩阵中寻找鞍点_C++_算法_矩阵鞍点算法_鞍点_
5星 · 资源好评率100%
好的,那么这里提供一个使用C语言实现的解决方案,不使用函数而是使用二维数组:
```c
#include <stdio.h>
int main() {
int n, i, j, k, max_index, min_index, saddle_point_exist = 0;
scanf("%d", &n);
int matrix[n][n];
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
for (i = 0; i < n; i++) {
max_index = 0;
for (j = 1; j < n; j++) {
if (matrix[i][j] > matrix[i][max_index]) {
max_index = j;
}
}
for (k = 0; k < n; k++) {
if (matrix[k][max_index] < matrix[i][max_index]) {
break;
}
}
if (k == n) {
printf("%d %d\n", i, max_index);
saddle_point_exist = 1;
break;
}
}
if (!saddle_point_exist) {
printf("NONE\n");
}
return 0;
}
```
该程序首先输入一个正整数n,表示矩阵的阶数。随后输入n行,每行有n个整数,表示矩阵的元素。程序会先将输入的矩阵存储在二维数组matrix中。
接着程序会在矩阵中寻找鞍点。对于矩阵中的每一行i,程序会先找到该行中最大值所在的列max_index。然后程序会在第max_index列中寻找最小值,如果该最小值等于matrix[i][max_index],则说明matrix[i][max_index]是一个鞍点,输出其位置(i, max_index),并将saddle_point_exist设置为1。最后程序会判断saddle_point_exist的值,如果为0,则输出"NONE"。
阅读全文