对于一道题目规定二维方阵 N*M,并指出要求 1<=n乘以m<=1000000,做题中若开一个二维的arr[1000000][1000000]必定会超内存,此时可以采取用一位数组存二维数组,或者采用vector动态二维数组的情况
//vector动态数组的方法
#include <iostream>
#include <vector>
using namespace std;
vector<int>arr[1000005];
int main(void)
{
int n, m;
int a;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> a;
arr[i].push_back(a);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << arr[i][j] << ' ';
}
cout << endl;
}
return 0;
}
//一维数组的二维使用方式
#include <iostream>
#include <vector>
using namespace std;
int arr[1000005];
int main(void)
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i * m + j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << arr[i*m+j] << ' ';
}
cout << endl;
}
return 0;
}