查找二维方阵中的鞍点(是行的最大/小值,且是列的最小/大值) //输入:void //输出:int int Q1(){ int a[N][N],i,j; int max,row=0,colum=0; srand(time(NULL));
时间: 2024-05-16 09:14:54 浏览: 82
以下是一个简单的实现:
```c++
#include <iostream>
#include <ctime>
using namespace std;
const int N = 5;
int main() {
int a[N][N], i, j;
int max, row = 0, column = 0;
srand(time(NULL));
// 随机生成二维数组
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
a[i][j] = rand() % 100;
cout << a[i][j] << " ";
}
cout << endl;
}
// 查找鞍点
for (i = 0; i < N; i++) {
max = a[i][0];
for (j = 1; j < N; j++) {
if (a[i][j] > max) {
max = a[i][j];
column = j;
}
}
int min = max;
for (j = 0; j < N; j++) {
if (a[j][column] < min) {
min = a[j][column];
row = j;
}
}
if (max == min) {
cout << "鞍点为:" << max << ",坐标为:(" << row << ", " << column << ")" << endl;
}
}
return 0;
}
```
这里的思路是先随机生成一个二维数组,然后遍历每一行,找到该行的最大值,再在该列中找到最小值,如果最大值和最小值相等,则说明该点是一个鞍点,输出其坐标。
阅读全文