算法思维拓展:用java实现蛇形打印

算法思维拓展:用java实现蛇形打印_第1张图片

class demo {
    static int length = 8;
    static int value = 1;
    static int[][] snake = new int[length][length];
    static Direction lastDirection = Direction.Right;

    static enum Direction {
        Right, Down, Left, Up;
    }

    public static void initialArray() {
        int row = 0, col = 0;
        for (int c = 0; c < length * length; c++) {
            snake[row][col] = value;
            lastDirection = findDirection(row, col);
            switch (lastDirection) {
                case Right:
                    col++;
                    break;
                case Down:
                    row++;
                    break;
                case Left:
                    col--;
                    break;
                case Up:
                    row--;
                    break;
                default:
                    System.out.println("error");
            }
            value++;
        }
    }

    static Direction findDirection(int row, int col) {
        Direction direction = lastDirection;
        switch (direction) {
            case Right: {
                if ((col == length - 1) || (snake[row][col + 1] != 0))
                    direction = direction.Down;
                break;
            }
            case Down: {
                if ((row == length - 1) || (snake[row + 1][col] != 0))
                    direction = direction.Left;
                break;
            }
            case Left: {
                if ((col == 0) || (snake[row][col - 1] != 0))
                    direction = direction.Up;
                break;
            }
            case Up: {
                if (snake[row - 1][col] != 0)
                    direction = direction.Right;
                break;
            }
        }
        return direction;
    }

    public static void main(String[] args) {
        initialArray();

        // display.....
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length; j++) {
//                System.out.print(snake[i][j] + "  ");
                System.out.printf(" %2d", snake[i][j]);
            }
            System.out.println();
        }
    }
}

你可能感兴趣的:(数据结构小算法总结,Java经典编程案例)