题目描述
在 n * n 方阵里填入 1, 2, …, n * n, 要求填成蛇形。例如 n = 4 时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
多组测试数据。
每组测试数据第一行输入方阵的维数,即 n 的值。(n <= 100)
输出
每组测试数据输出结果是蛇形方阵,方阵中每行每两个元素间空格,末尾不要有多余空格,每个方阵后空一行。
样例输入复制
3
样例输出复制
7 8 1 6 9 2 5 4 3
#include<iostream>
using namespace std;
int dx[] = {-1,0,1,0},dy[] = {0,1,0,-1};
int q[101][101];
int main()
{
int x;
while(cin >> x){
int rc = x * x;
int d = 2;
int x1 = 0, y = x - 1;
for(int i = 1; i <= rc; i ++)
{
q[x1][y] = i;
int a = x1 + dx[d];
int b = y + dy[d];
if(a < 0 || a >= x || b < 0 || b >= x || q[a][b])
{
d = (d + 1) % 4;
a = x1 + dx[d];