AcWing 753. 平方矩阵 I 使用方向数组
原题链接
困难
作者:
南方
,
2021-01-10 21:08:30
,
所有人可见
,
阅读 462
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int xy[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
short n[100][100];
int main()
{
short N;
int x , y;
while(1)
{
memset(n , 0 , sizeof(short) * 10000);
cin >> N;
if(!N)
exit(0);
x = 0 , y = -1;
for(short i = 1 ; i <= N ; i++)
{
for(int k = 0 ; k < 4 ; k++)
{
while(1)
{
x = x + xy[k][0];
y = y + xy[k][1];
if(x <= (N - i) && x >= 0 && y <= (N - i) && y >= 0 && n[x][y] == 0)
n[x][y] = i;
else
{
x = x - xy[k][0];
y = y - xy[k][1];
break;
}
}
}
}
for(int i = 0 ; i < N ; i++)
{
for (int j = 0 ; j < N ; j++)
cout << n[i][j] << " ";
cout << endl;
}
cout << endl;
}
return 0;
}