c++求找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
时间: 2023-09-09 18:08:05 浏览: 87
好的,这是一个经典的算法问题。你可以按以下步骤来实现:
1. 遍历二维数组,找到每一行的最大值以及每一列的最小值。
2. 对于每一个元素,判断其是否为其所在行的最大值以及其所在列的最小值,如果是,则该元素即为一个鞍点。
3. 如果没有找到任何一个鞍点,则说明该二维数组没有鞍点。
下面是 C++ 的代码实现:
```c++
#include <iostream>
using namespace std;
int main()
{
int a[100][100], row_max[100], col_min[100];
int m, n, i, j, flag = 0;
cout << "Enter the number of rows: ";
cin >> m;
cout << "Enter the number of columns: ";
cin >> n;
cout << "Enter the elements of the matrix: " << endl;
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
cin >> a[i][j];
}
}
// 找出每一行的最大值
for(i = 0; i < m; i++)
{
row_max[i] = a[i][0];
for(j = 1; j < n; j++)
{
if(a[i][j] > row_max[i])
{
row_max[i] = a[i][j];
}
}
}
// 找出每一列的最小值
for(j = 0; j < n; j++)
{
col_min[j] = a[0][j];
for(i = 1; i < m; i++)
{
if(a[i][j] < col_min[j])
{
col_min[j] = a[i][j];
}
}
}
// 找出鞍点
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == row_max[i] && a[i][j] == col_min[j])
{
cout << "Saddle Point found at (" << i << ", " << j << ")" << endl;
flag = 1;
}
}
}
if(flag == 0)
{
cout << "The matrix has no saddle point." << endl;
}
return 0;
}
```
希望能对你有所帮助!
阅读全文