计算鞍点(程序设计与算法(一))vector实现二维数组

马鞍点的题其实我之前学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的行或列的大小,然后便可再利用二重循环赋值。

猜你喜欢

转载自blog.csdn.net/weixin_44009743/article/details/86767985