螺旋形数组和蛇形数组的实现

本文详细解析了螺旋形和蛇形数组填充算法的实现思路与代码。螺旋形数组采用四方向循环递增的方式,通过设定边界判断何时改变方向;蛇形数组则根据奇偶行改变递增方向,巧妙处理边界越界情况,实现数组的高效填充。

螺旋形数组

输出样式:(以5X5的正方形数组为例)
在这里插入图片描述

分析思路:
  • 可以看到数组中的数据总是在螺旋形的递增:先向右循环递增,再是向下循环,然后向左,最后向上,如此循环。因此需要5个循环。
  • 因此关键问题就是在何时改变方向。可以定义这样4个变量:右界,下界,左界,上界;分别存储边界的下标。在某个方法上循环递增时,只需判断它是否越过的该方向的界。如果没有越过,继续在该方法上递增;否则,跳出该方向的循环,并且改变此方向的对应的界值,然后进入下一个方向的循环。(例如:0-4不断向右递增,当4递增后,发现y坐标越界,则上界坐标应该+1,因为第一行已经完成填充,此后第一行不再能被遍历,然后从5的位置向下递增。)
  • 当数据被填满时即结束。
代码实现:
#include<stdio.h>
int main(){
   
   
	printf("请输入n:");
	int n;
	scanf("%d",&n);
	int arr[n][n];							//定义n阶的数组
	int left=0, right=n,up=0,down=n;		//边界的下标
	int x = 0 ,y = 0;						//当前元素下标
	int count = 0;

	while(count < n*n){
   
   
		while(y < right
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值