Java实现蛇形举证_2

前面说到了s型的蛇形举证,接下来分享一下回旋的蛇形举证的Java代码的实现过程:
我们需要的目标输出是这个样子的:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
按照这个数字增加的路线分析,可以简单的理解为这是数字在围绕着一个变化边长的四边形做一个回旋的过程,那么就需要将四个边的边长,使用变量的关系表示出来就可以了!!所以我在写的过程中将他的四个方向分开了写了!!

//那么我们先分析向右走的这一条边:可以表示为
int num=1;
for(int a=0;a<arr.length;a++){arr[0][a]=num++;}
//在看像下的一边,是不是就可以表示为
for(int b=0;b<arr.length;b++){arr[b][3]=num++;}
//那么其他的两个边就同样可以这样表示出来了!
for(int c=arr.length-1;c>=0;c--){arr[3][c]=num++;}
for(int d=arr.length-1;d>=1;d--){arr[d][1]=num++;}

/**现在表示出来了最外面的四个边,接下来就要将里面的边长给表示出来,让
里面的一圈样使用上面的套路,这样一圈一圈的表示,就能将最后的举证表
示出来了!是不是需要一个for循环表示需要绕的圈????看看上面那个完
整的举证,我们数一数他需要的圈数,没错他需要2圈,但是如果是一个3*3的矩阵的话,就同样需要两圈,那么假设他同样需要(矩阵大小)/2+1,这个就是理想的圈数,接下来会考虑到圈数里面的动态关系,表示方法如下,读者可以根据里面的那个for循环分析,这样一来是不是四个边一点点缩小的就都出来了!!!*/
    arr = new int[n][n];
        int num=1;
        for(int x=0;x<n/2+1;x++){
            //right
            for(int a=x;a<n-x;a++){
                arr[x][a]=num++;
            }
        }

下面就是我写的程序的源代码啦!!!

package practices;

public class SnackArray1 {
    static int arr[][] = null;
    public static void main(String [] args){
        getSnake(4);
        printSnake();
    }
    //获取蛇形矩阵
    public static void getSnake(int n){
        arr = new int[n][n];
        int num=1;
            /*在确定边长的变量的是后,确认一下我们需要的目的值和数组      长度的关系,和我们循环圈数的关系,里面四个边就可以写出来了!!*/
        for(int x=0;x<n/2+1;x++){
            //right
            for(int a=x;a<n-x;a++){
                arr[x][a]=num++;
            }
            //down
            for(int a=x+1;a<n-x;a++){
                arr[a][n-x-1]=num++;
            }
            //left
            for(int a=n-x-2;a>=x;a--){
                arr[n-x-1][a]=num++;
            }
            //up
            for(int a=n-x-2;a>x;a--){
                arr[a][x]=num++;
            }
        }
    }
    //用来将存好的矩阵打印出来
    public static void printSnake(){
        for(int a=0;a<arr.length;a++){
            for(int b=0;b<arr.length;b++){
                System.out.print(arr[a][b]+"    ");
            }
            System.out.println();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值