螺旋形数组
输出样式:(以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

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

被折叠的 条评论
为什么被折叠?



