栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【无标题】18964 蛇形方阵

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】18964 蛇形方阵

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

一、题目描述
Description
给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字。

如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。


  输入格式
一个整数n。

输出格式
n对应的蛇形方阵。
 

输入样例
4
 

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

提示
注意输出格式!
二、题解

因为数据量不大,因此直接用递归来写,思路清晰,先设置dx,dy来标记方向,再根据边界来改变方向。

#include
#include
using namespace std;
int dx = 0, dy = 1;
int v[10][10], a[10][10];
int n;
void dfs(int value,int x,int y) {
	
	v[x][y] = 1;
	a[x][y] = value;
	if (value == n * n)
		return;
	else{
		int nx = x + dx;
		int ny = y + dy;
		if (nx >= 0 && nx < n && ny >= 0 && ny < n && !v[nx][ny] && !a[nx][ny]) {
			dfs(value + 1, nx, ny);
		}
		else if (v[nx][ny] && dy == 1 || ny >= n) {
			dx = 1;
			dy = 0;
			dfs(value + 1, x + 1, y);
		}
		else if (nx >= n || v[nx][ny]&& dx == 1) {
			dx = 0;
			dy = -1;
			dfs(value + 1, x, y - 1);
		}
		else if (ny < 0 || v[nx][ny] && dy == -1) {
			dx = -1;
			dy = 0;
			dfs(value + 1, x - 1, y);
		}
		else{
			dx = 0;
			dy = 1;
			dfs(value + 1, x, y + 1);
		}
		
	}

}
int main(void) {
	
	cin >> n;
	dfs(1, 0, 0);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
			printf("%3d", a[i][j]);
		printf("n");
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号