蛇形数组

蛇形数组

#include <stdio.h>
#include<string.h>
#define MAXN 20
int a[MAXN][MAXN];
int main(int argc, char *argv[])
{
	int tot,x,y,n;
	scanf("%d",&n);
	memset(a,0,sizeof(int));  //全部置0
	tot=a[x=0][y=n-1]=1;  //蛇形矩阵左上方置一
	while(tot<n*n)
	{
		while(x+1<n&&!a[x+1][y]) a[++x][y]=++tot;  //向下递增 
		while(y-1>=0&&!a[x][y-1]) a[x][--y]=++tot; //向左递增
		while(x-1>=0&&!a[x-1][y]) a[--x][y]=++tot; //向上递增
		while(y+1<n&&!a[x][y+1]) a[x][++y]=++tot;  //向右递增
	}
	// 显示
	for(x=0;x<n;x++)
	{
		for(y=0;y<n;y++)
		  printf("%5d",a[x][y]);
		printf("\n");
	}
		return 0;
}

运行结果

10
   28   29   30   31   32   33   34   35   36    1
   27   58   59   60   61   62   63   64   37    2
   26   57   80   81   82   83   84   65   38    3
   25   56   79   94   95   96   85   66   39    4
   24   55   78   93  100   97   86   67   40    5
   23   54   77   92   99   98   87   68   41    6
   22   53   76   91   90   89   88   69   42    7
   21   52   75   74   73   72   71   70   43    8
   20   51   50   49   48   47   46   45   44    9
   19   18   17   16   15   14   13   12   11   10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值