美文网首页
“晕头”数组

“晕头”数组

作者: 你大爷的5678 | 来源:发表于2020-04-12 15:29 被阅读0次

不知道该如何叫此类的数组,只是看起来像个催眠的符号.so....

题目:输入一个数组的长度,要求按照如下图的方式输出数组:

环形的方式 环形的方式

网上有很多实现,初学java,作为练习,我也写了一个。

首先可以确定是数组内的元素总数,如果用户输入6,则总的元素则为6*6=36个元素。如题,数组的元素主要有4个方向,右,下,左,上。那么什么时候元素需要转向?下一个坑位有人占了,到达数组的边界。

是否需要转向

完整代码:

package com.kun;

import java.util.Arrays;

import java.util.Scanner;

public class ArrayTest {

    public static void main(String[] args) throws InterruptedException {

        var sc= new Scanner(System.in);

        var value= 1;

        while (value!= 0) {

            System.out.println("请输入数组长度(0退出)");

            value= sc.nextInt();

            if (value<= 0) {

                break;

            } else {

                var x= 0;

                var y= 0;

                var turn= new String[]{"RIGHT", "DOWN", "LEFT", "UP"};

                var turnIndex= 0;

                var arr= new int[value][value];

                var totalLen= value* value;//总的数组元素

                for (int i= 0; i< totalLen; i++) {

                    var shouldNeedTurn= needTurn(x, y, arr, turn[turnIndex]);

                    arr[x][y] = i+ 1;

                    if (shouldNeedTurn) {

                        if (turnIndex== 0) {

                            x++;

                        } else if (turnIndex== 1) {

                            y--;

                        } else if (turnIndex== 2) {

                            x--;

                        } else {

                            y++;

}

                        turnIndex= (turnIndex+ 1) % turn.length;

                    } else {

                        if (turnIndex== 0) {

                            y++;

                        } else if (turnIndex== 1) {

                            x++;

                        } else if (turnIndex== 2) {

                            y--;

                        } else {

                            x--;

}

}

}

                for (int i= 0; i< value; i++) {

                    System.out.println(Arrays.toString(arr[i]));

}

}

}

}

    ///是否需要改变方向

    ///1、下一个元素已经有值

    ///2、到达边界

    public static boolean needTurn(int currentX, int currentY, int[][] arr, String turn) {

        var len= arr.length;

        switch (turn) {

            case "RIGHT":

                var nextY= currentY + 1;

                if (nextY< len) {

                    return arr[currentX][nextY] != 0;

                } else {

                    return true;

}

            case "DOWN":

                var nextX= currentX + 1;

                if (nextX< len) {

                    return arr[nextX][currentY] != 0;

                } else

                    return true;

            case "LEFT":

                var nextLeft= currentY - 1;

                if (nextLeft< len&& nextLeft>= 0) {

                    return arr[currentX][nextLeft] != 0;

                } else {

                    return true;

}

            case "UP":

                var nextUp= currentX - 1;

                if (nextUp< len&& nextUp>= 0) {

                    return arr[nextUp][currentY] != 0;

                } else

                    return true;

}

        return false;

}

}

相关文章

  • “晕头”数组

    不知道该如何叫此类的数组,只是看起来像个催眠的符号.so.... 题目:输入一个数组的长度,要求按照如下图的方式输...

  • 晕头

    讲师五期775天 星期五 晴 2019.7.19 今天干了一件晕头的事,让我自己都有点哭笑不得。我把今天上午...

  • 晕头

    这两天也不知道怎么了,头总是迷迷糊糊的,浑身乏力。 今天在家宅了一天,还是头疼,就是最爱的综艺也不能缓解疼痛。 随...

  • 晕头转向

    现在只有晕头转向这四个字能描述我现在的状态。一下午为了一个荣誉申请书,搞的不舒服。为什么不能把申请书格式,审...

  • 晕头转向

    不想学习就是不想学习,毕业后再也不想学习了,大学时其实就不想学习了,高三时也不想学习,确切说是不想考试了,哎哎哎哎...

  • 《晕头转向》

    生活中发生什么样的事情会让大家“晕头转向”呢?有的同学说很多作业写不过来的时候,有的同学说很多烦心事的时候,还有的...

  • 晕头转向

    今年,为了学分应该挺折腾的。 从周五到今天,足足挂了三天的课,到现在也不知道能不能拿到。 只能一步一步来了! 这个...

  • 晕头转向

    马上就要考试,时间滴答滴答走过,真的是不经过。 各种题目看过,脑子一片模糊,整个晕头转向。 虽不脱皮掉肉,也是各种...

  • 晕头转向

    2019年5月1日 多云 星期三 五一假期第一天,猪媽、爷爷奶奶和我宅在家,而宝贝,则和她的...

  • 晕头转向

网友评论

      本文标题:“晕头”数组

      本文链接:https://www.haomeiwen.com/subject/ouavmhtx.html