题解 | #蛇形矩阵#
蛇形矩阵
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(); } } }