import java.util.*; public class Main {
public static void main(String[] args) {
Scanner src = new Scanner(System.in);
int num = src.nextInt();
printlnByte(num);
}
public static void printlnByte(int num) {
int shortNum = num;
int firstNum = 1;
int chaNum =1;
/**
* 1 3 6 10
* 2 5 9
* 4 8
* 7
*/
//我们可以按照行来计算 按照你提示都是从 1 开始 当输入4 的时候意味着
//第一行有四个数 每次减一,减到一为止
/**
* 按行时,依次是 +2 +3 +4
* +3 +4
* +4
*
* 按照列的时候 +1
* +2
* +3
*/
for(int i=1; i<=num; i++) { //这个地方是答应每行 一共四行
int x = firstNum; //获取头值
//每次的加数//比如 第一行的加数 +2 +3 +4
int xCount = i+1;
for(int j = 1;j<=shortNum;j++) {
//这个部分单独写一块用来处理
/**
* firstNum =1; short 这次为4 j 为1 2 3 4
* 3 1 2 3
* 2 1 2
* 1 1
*/
System.out.print(x+" ");
x += xCount++; // 保证每次加的值 这两步 太重要了
}
System.out.println();
//减1 保证第一行4个数 ; 第二行三个数 ;第三行两数;第四行 一个数
shortNum--;
firstNum += chaNum++; //这样就是每次的开头的值
}
}
}

京公网安备 11010502036488号