P5731 【深基5.习6】蛇形方阵

题目描述

给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。

输入格式

输出格式

输入输出样例

输入 输出
4 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

解答

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int a[n][n];
	memset(a,0,sizeof(a));
	int quan=0;
	int x=0,y=0;
	int num=1;
	while(1)
	{
		if(a[x][y]>0)
		{
			quan++;
			x=quan;
			y=quan;
		}
		else
		{
			int nn=n-quan-1;
			
			if(nn<1) break;

			a[x][y]=num;
			num++;
			
			if(x==quan && y<nn)
				y++;
			else if(x<nn && y==nn)
				x++;
			else if(x==nn && y<=nn && y>quan)
				y--;
			else if(x<=nn && x>quan && y==quan)
				x--;
		}
	}
	
	if(n==1)
		cout<<setw(3)<<setfill(' ')<<1;
	else
	{
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
				cout<<setw(3)<<setfill(' ')<<a[i][j];
			cout<<endl;
		}
	}
	return 0;
} 
posted @ 2021-09-29 21:48  CodeSpark  阅读(410)  评论(0)    收藏  举报