#include <iostream> using namespace std; #define SIZE 4 int main() { int matrix[SIZE][SIZE]; //目标矩阵 // 输入矩阵元素 for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { cin >> matrix[i][j]; } } // 判断鞍点 for (int i = 0; i < SIZE; i++) { int max_in_row = matrix[i][0]; // 行最大值 int col_index = 0; // 列下标 bool is_saddle_point = true; // 是否为鞍点 for (int j = 1; j < SIZE; j++) { if (matrix[i][j] > max_in_row) { max_in_row = matrix[i][j]; col_index = j; } } for (int k = 0; k < SIZE; k++) { if (matrix[k][col_index] < max_in_row) { is_saddle_point = false; break; } } if (is_saddle_point) { cout << "[" << i << "][" << col_index << "]=" << max_in_row << endl; } } return 0; }这个程序没有考虑输入的矩阵可能存在多个鞍点的情况,请修改该代码使其在输入1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4时返回[0][0]=1 [0][1]=1 [0][2]=1 [0][3]=1
时间: 2024-01-16 09:04:39 浏览: 60
修改后的代码如下:
```
#include <iostream>
using namespace std;
#define SIZE 4
int main() {
int matrix[SIZE][SIZE]; //目标矩阵
// 输入矩阵元素
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
cin >> matrix[i][j];
}
}
bool has_saddle_point = false; // 是否有鞍点
// 判断鞍点
for (int i = 0; i < SIZE; i++) {
int max_in_row = matrix[i][0]; // 行最大值
int col_index = 0; // 列下标
bool is_saddle_point = true; // 是否为鞍点
for (int j = 1; j < SIZE; j++) {
if (matrix[i][j] > max_in_row) {
max_in_row = matrix[i][j];
col_index = j;
}
}
for (int k = 0; k < SIZE; k++) {
if (matrix[k][col_index] < max_in_row) {
is_saddle_point = false;
break;
}
}
if (is_saddle_point) {
cout << "[" << i << "][" << col_index << "]=" << max_in_row << endl;
has_saddle_point = true; // 设置存在鞍点标志
}
}
if (!has_saddle_point) {
cout << "不存在鞍点" << endl;
}
return 0;
}
```
修改后的程序增加了一个布尔变量 `has_saddle_point`,用于记录是否存在鞍点。在判断鞍点时,如果找到了一个鞍点,则输出并将标志变量设置为 true。最后根据标志变量的值输出相应的信息。这样程序就可以正确处理存在多个鞍点的情况了。
阅读全文