题解 | #蛇形矩阵#

蛇形矩阵

https://ac.nowcoder.com/acm/problem/22231

蛇形矩阵

关键点

整个输出过程有上下左右四个方向,上下由行索引row和列索引col来控制,需要额外关心的是左右的变化,用一个flag来记录.一共有上下左右四个边界.只有到达边界的时候,左右方向会变化.

代码

import java.util.*;

public class Main { 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] matrix = generateSnakeMatrix(n);
        printMatrix(matrix);
    }
    public static int[][] generateSnakeMatrix(int n) {
        int[][] matrix = new int[n][n];
        int num = 1;
        int row = 0, col = 0;
        boolean direction = true; // true: 向右,false: 向左

        while (num <= n * n) {
            matrix[row][col] = num;
            num++;

            if (direction) {
              	// 向右的情况
                if(col == n - 1){
                  // 到达右边界,则就要向下一步,后续要向左.
                    row++;
                    direction = false;
                }else if(row == 0){
                  // 如果是首行,则向右一步
                    col++;
                    direction = false;
                }else{
                  // 其他情况都是向右上走
                    col++;
                    row--;
                }
            } else {
              // 向左的情况
                if(row == n - 1){
                  // 到达下边界,则要向右一步,后续要向右
                    col++;
                    direction = true;
                }else if(col == 0){
                  // 如果是首列,则向下一步
                    row++;
                    direction = true;
                }else{
                  // 其他情况都是向左下走
                    row++;
                    col--;
                }
            }
        }

        return matrix;
    }

    public static void printMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                System.out.print(matrix[i][j]);
                if(j != matrix[0].length)    System.out.print(" ");
            }
            System.out.println();
        }
    }
}
全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务