描述
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example, Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example, Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
void SpiralMatrixII(int n)
{
int **a = new int*[n];
for (int i = 0; i < n; i++)
a[i] = new int[n];
int cnt = 0;
for (int i = 0; i <= (n - 1) / 2; i++)
{
for (int j = i; j < n - i - 1; j++)
{
cnt++;
a[i][j] = cnt;
}
for (int j = i; j < n - i - 1; j++)
{
cnt++;
a[j][n - i - 1] = cnt;
}
for (int j = n - i - 1; j > i; j--)
{
cnt++;
a[n - i - 1][j] = cnt;
}
for (int j = n - i - 1; j > i; j--)
{
cnt++;
a[j][i] = cnt;
}
}
if ( n % 2 == 1)
a[n / 2][n / 2]=n*n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << setw(4)<<a[i][j];
cout << endl;
}
}
int main()
{
int n = 5;
SpiralMatrixII(n);
}