题解 | #蛇形矩阵#

蛇形矩阵

https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n = in.nextInt();
        int [][] snake = new int[n][n];
        // 由于输入正整数
        snake[0][0] = 1;
	  // 当N == 1 的时候 只有一个 00位置有数字1
	  
	  // 当N>=2的时候
        if(n>=2){
            for(int i=1;i<n;i++){
                snake[i][0] = snake[0][i-1] + 1;
                // 自上而下每次i的循环 设置一个左侧第一列的元素

			    //  当前循环为 i 则 当前斜着的这层 有 i+1 个元素  其中在左侧第一列的元素已经生成
			    //  还缺 i 个斜着放着的元素  故 j 的循环走 i 次
			    //  斜着自左下到右上  行号:index1--   列号:index2++
			    //  每个斜着同层的右上元素比相邻的左下元素 的数值要 大 1 
                for(int j=1;j<=i;j++){
                    snake[i-j][j] = snake[i-j+1][j-1] + 1;
                }
            }
		  // 最后两重循环结束后 形成一个左侧矩阵值不为0 右侧矩阵都为0 的二维数组
        }
	  // 打印输出(只打印左侧半个矩阵的非零值)
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(snake[i][j]!=0)
                System.out.print(snake[i][j] + " ");
            }
            System.out.println();
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务