最近在学习STL,感觉真的是好用,以前二维数组动态分配要自己写循环,还要注意释放内存。现在一个vector全解决。
int n;
cin >> n;
vector<int> line(n);
vector<vector <int>> matrix(n, line);
int m, i, j, num, flag = 1;
m = n*n + 1;
i = 0; j = 0;
for (num = 1; num <= m / 2; num++) //生成矩阵
{
matrix[i][j] = num;
matrix[n - i - 1][n - j - 1] = m - num;
i = i - flag; j = j + flag;
if (i < 0){ i = 0; flag = -flag; }
if (j < 0){ j = 0; flag = -flag; }
}
//输出矩阵
for (auto l : matrix)
{
for (auto k : l)
{
cout << k<<"\t";
}
cout << endl;
}
system("pause");
return 0;