(1) 如何创建一个动态的二维数组
利用C++中的STL中的vector
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int row, col;
cout << "请输入行列值:";
cin >> row>> col;
vector<vector<int> > array(row,vector<int>(col));
cout << "请输入二维数组的元素(按行输入):";
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++) {
cin >> array[i][j];
}
}
cout << endl;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++) {
cout<< array[i][j];
cout << " ";
}
cout << endl;
}
return 0;
}
(2) 动态有序二维数组的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
#include<iostream>
#include<vector>
using namespace std;
bool Find(int target, vector<vector<int>> array) {
if (array.size() == 0)
return false;
if (array.size() != 0)
{
int row = 0;
int col = array[0].size() - 1;
while (row < array.size() && col >= 0)
{
if (array[row][col] == target)
return true;
else if (array[row][col] > target)
col--;
else
row++;
}
}
return false;
}
int main()
{
int row, col;
cout << "请输入行列值:";
cin >> row>> col;
vector<vector<int> > array(row,vector<int>(col));
cout << "请输入二维有序数组的元素(按行输入):";
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++) {
cin >> array[i][j];
}
}
int target;
cout << "请输入待查找整数:";
cin >> target;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++) {
cout<< array[i][j];
cout << " ";
}
cout << endl;
}
cout<<Find(target, array)<<endl;
return 0;
}