/*
问题描述:给定一个2维数组,将数组中的元素以螺旋状顺序打印出来
来源:网易算法课
日期:2017-10-23
问题描述:给定一个2维数组,将数组中的元素以螺旋状顺序打印出来
来源:网易算法课
日期:2017-10-23
*/
#include <iostream>
using namespace std;
class ArraySpiral{
public:
ArraySpiral(int n)
{
arr = new int *[n];
for (int i = 0; i < n; i++)
arr[i] = new int[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
arr[i][j] = i*n + j + 1;
}
}
top = 0;
right = n - 1;
bottom = n - 1;
left = 0;
}
void printArray()
{
while (top <= bottom && left <= right)
{
for (int i = left; i <= right; i++)
{
cout << arr[top][i] << " ";
}
for (int i = top + 1; i <= bottom; i++)
{
cout << arr[i][right] << " ";
}
for (int i = right - 1; i >= left; i--)
{
cout << arr[bottom][i] << " ";
}
for (int i = bottom - 1; i > top; i--)
{
cout << arr[i][left] << " ";
}
top++;
right--;
left++;
bottom--;
}
}
private:
int **arr;
int top = 0, right = 0, bottom = 0, left = 0;
};
/*
int main()
{
ArraySpiral as(4);
as.printArray();
return 0;
}
*/