蓝桥杯模拟算法:蛇形方阵

P5731 【深基5.习6】蛇形方阵 - 洛谷 | 计算机科学教育新生态

我们只要定义两个方向向量数组,这种问题就可以迎刃而解了

比如我们是4的话,我们从左向右开始存,1,2,3,4 到5的时候y就大于4了就是越界了,这时候我们换成向下的方向,也就是用第二个方向向量继续往下走,也就是增加x,继续存5,6,7,接下来x又越界了,接下来继续向左存8,9,10 然后向上存11,12 向右存13,14,向下存15,向左存16

cpp 复制代码
#include <iostream>
#include <cstring>
using namespace std;

const int N = 19;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
int ret[N][N];
int main()
{
	int n;
	cin >> n;
	int cnt = 1;
	int x = 1,y = 1;
	int pos = 0;
	int a,b;
	while(cnt <= n*n)
	{
		ret[x][y] = cnt;
		a = x+dx[pos];b = y+dy[pos];
		if(a>n || b>n || a<1 || b<1 || ret[a][b])
		{
			pos = (pos+1)%4;
			a = x+dx[pos];b=y+dy[pos];
            
		}
        x = a;y = b;
		cnt++;		
	}
	for(int i = 1;i<=n;i++)
	{
		for(int j = 1;j<=n;j++)
		{
			printf("%3d",ret[i][j]);
			
		}
		puts("");
	}
	
	
	
	
	return 0;
}
相关推荐
SirLancelot141 分钟前
数据结构-Set集合(一)Set集合介绍、优缺点
java·开发语言·数据结构·后端·算法·哈希算法·set
YouQian7721 小时前
label 拓扑排序
数据结构·算法
YouQian7721 小时前
(补题)小塔的饭
算法
歌者長門1 小时前
做题笔记:某大讯飞真题28道
java·数据结构·算法
是店小二呀1 小时前
【动态规划 | 多状态问题】动态规划求解多状态问题
算法·动态规划
JehanRio2 小时前
谈谈毕业工作一年后的变化
职场和发展
竹子_232 小时前
《零基础入门AI:传统机器学习核心算法解析(KNN、模型调优与朴素贝叶斯)》
人工智能·算法·机器学习
boyedu2 小时前
哈希指针与数据结构:构建可信数字世界的基石
数据结构·算法·区块链·哈希算法·加密货币
✿ ༺ ོIT技术༻2 小时前
剑指offer第2版:双指针+排序+分治+滑动窗口
算法·排序算法·剑指offer·双指针·滑动窗口·分治
细嗅蔷薇@2 小时前
C语言在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积,并在fun()函数中输出。
c语言·算法·矩阵