P5731 深基5.习6蛇形方阵

Posted Kunkun只喝怡宝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P5731 深基5.习6蛇形方阵相关的知识,希望对你有一定的参考价值。

题目描述

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

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

代码

按照顺时针方向一圈一圈的从外向内给方阵赋值,每一圈都是相同的四个步骤,向左——向下——向右——向上。

#include<bits/stdc++.h>

using namespace std;

int main(){
	int n,m=1,i=1,j=1,a[10][10];
	memset(a,0,sizeof(a));
	cin>>n;
	while(m<=n*n){
		while(i<=n&&a[j][i]==0){
			a[j][i]=m++;
			if(i+1<=n&&a[j][i+1]==0)
				i++;
			else{
				j++;
				break;
			}
		}
		while(j<=n&&a[j][i]==0){
			a[j][i]=m++;
			if(j+1<=n&&a[j+1][i]==0)
				j++;
			else{
				i--;
				break;
			}
		}
		while(i>0&&a[j][i]==0){
			a[j][i]=m++;
			if(i-1>0&&a[j][i-1]==0)
				i--;
			else{
				j--;
				break;
			}
		}
		while(j>0&&a[j][i]==0){
			a[j][i]=m++;
			if(j>0&&a[j-1][i]==0)
				j--;
			else{
				i++;
				break;
			}
		}
	}
	for(j=1;j<=n;j++){
		for(i=1;i<=n;i++)
			printf("%3d",a[j][i]);
		cout<<endl;
	}
	return 0;
}

以上是关于P5731 深基5.习6蛇形方阵的主要内容,如果未能解决你的问题,请参考以下文章

蛇形矩阵

蛇形填数字 (附书上例题答案)

P5724 深基4.习5求极差

P5732 深基5.习7杨辉三角

每日一练第7天:蛇形填数

蛇形填数