#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而是返回[0][0]=1,请修改该代码使其符合要求
时间: 2024-01-16 09:04:39 浏览: 54
使用include <iostream>时一定要加using namespace std
修改后的代码如下:
```
#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];
}
}
int count = 0; // 记录鞍点个数
// 判断鞍点
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;
count++; // 鞍点个数加1
}
}
if (count == 0) {
cout << "不存在鞍点" << endl;
} else {
cout << "共有" << count << "个鞍点" << endl;
}
return 0;
}
```
修改后的程序增加了一个计数器 `count`,用于记录鞍点的个数。在判断鞍点时,如果找到了一个鞍点,则输出并将计数器加1。最后根据计数器的值输出相应的信息。这样程序就可以正确处理存在多个鞍点的情况了。
阅读全文