【自存】数组实现蛇形矩阵

157621
1614853
22171394
2321181210
2524201911

为实现以上蛇形矩阵,自存屎山代码如下

#include<stdio.h>
#define N 30
int main(){
	int n,i=1,j,dic=1,k; //定义1为往左上走,-1为往右下走 
	int sb[N][N];
	scanf("%d",&n);
	j = n;
	sb[i][j] = 1;
	for(k=2;k<=n*n;k++){
		if(dic == 1){//往左上方移动
			if(i==1){//遇到上边界 
				if(j!=1){//遇到上边界而不碰左边界 
					sb[i][--j] = k; //向左 
					dic = -1;//方向改为右下 
					continue;
				}
				else{//遇到上边界的同时遇到左边界 
					sb[++i][j] = k;//向下 
					dic = -1;//方向改为右下 
					continue;
				}
			}
			else{//正常左上移动 
				if(j!=1){//正常左上移动 
				sb[--i][--j] = k;//向左上 
				continue;
			}
				else{//遇到左边界而不碰上边界 
				sb[++i][j] = k;//向下 
				dic = -1; //方向改为右下 
				continue;
				}
			}
		}
		if(dic == -1){//往右下走的时候 
			if(j==n){
				if(i!=n){
				sb[++i][j] = k ;//遇到右边界变为往下走 
				dic = 1 ;//往下走之后再变为左上 
				continue;
				}
				else{//遇到下边界 且遇到右边界 
					sb[i][--j] = k;//往左走 
					dic = 1;//方向改为左上 
					continue; 
				}
			}
			else if(i==n){//遇到下边界 
				sb[i][--j] = k;
				dic = 1;//遇到下边界变为往右走 
				continue ;
			}
			else{
				sb[++i][++j] = k ;//正常往右下走 
				continue;
			}
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			printf("%d ",sb[i][j]);
		}
		printf("\n");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值