马鞍点的题其实我之前学C的时候用内置二维数组做过,现在又碰到我便尝试下vector实现二维数组。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
constexpr int count = 5;
int num, i, j, k;
bool sign = false; //标记变量,有鞍点则不输出not found
vector<vector<int>> v(count); //vector实现二维数组
for (i = 0; i != v.size(); ++i)
{
for (j = 0; j != count; ++j)
{
cin >> num;
v[i].push_back(num); //还有另外一种添加元素方法在下方
}
}
for (i = 0; i != v.size(); ++i)
{
int maxn=0;
for (j = 0; j != v[i].size(); ++j)
{
if (v[i][j] > v[i][0])
maxn = j;
}
int minn=0;
for (k = 0; k != v.size(); ++k)
{
if (v[k][maxn] < v[0][maxn])
minn = k;
}
if (minn == i)
{
sign = true;
cout << i + 1 << " " << maxn + 1 << " " << v[i][maxn] << endl;
}
}
if (!sign)
cout << "not found" << endl;
system("pause");
}
vector二维数组添加元素的另一方法:
for (i = 0; i != v.size(); ++i)
{
v[i].resize(5);
}
利用成员函数resize()可以改变/初始化vector的行或列的大小,然后便可再利用二重循环赋值。