蛇形矩阵-Java代码示例

蛇形矩阵-Java代码示例


import java.util.Scanner;

public class SeXingJuZhen {

    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        int x=reader.nextInt();
        int[][] a=new int[x][x];
        int direction=1;//1,2,3,4分别表示右下左上
        int i=0,j=0;
        int index=1;

        while(a[i][j]==0){      
            //对数组赋值
            a[i][j]=index++;

            //调整方向
            direction=adjust(a,x,i,j,direction);

            //判断下一步是横向移动还是纵向
            if(direction==1){
                j++;
            }
            if(direction==2){
                i++;
            }
            if(direction==3){
                j--;
            }
            if(direction==4){
                i--;
            }


        }//while


        for(i=0;i<x;i++){
            for(j=0;j<x;j++){
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }

    }

    public static int adjust(int[][] a,int x,int i,int j,int direction){


        if(direction==1){
            if(j==x-1){//到达边界
                direction++;
            }
            else{
                if(a[i][j+1]!=0){//下一个数已被修改
                    direction++;
                }
            }
        }
        if(direction==2){
            if(i==x-1){//到达边界
                direction++;
            }
            else{
                if(a[i+1][j]!=0){//下一个数已被修改
                    direction++;
                }
            }
        }
        if(direction==3){
            if(j==0){//到达边界
                direction++;
            }
            else{
                if(a[i][j-1]!=0){//下一个数已被修改
                    direction++;
                }
            }
        }
        if(direction==4){
            if(i==0){//到达边界
                direction=1;
            }
            else{
                if(a[i-1][j]!=0){//下一个数已被修改
                    direction=1;
                }
            }
        }

        return direction;
    }


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值