public class 杨辉三角形 {
public static void main(String[] args) {
int n = 10;
int[] dp = new int[n + 1]; //DP动态规划 一维优化
dp[1] = 1;
for (int i = 1; i <= n; ++i) {
//格式化树形结构,输出空格
for (int k = n; k > i; --k) System.out.print(" ");
//DP
StringBuilder row = new StringBuilder();
for (int j = i; j >= 1; --j) {
dp[j] = dp[j] + dp[j - 1];
if (dp[j] != 0) {
row.append(new StringBuilder((dp[j] + " ")).reverse()); //反转问题
}
}
System.out.println(row.reverse().toString().trim());
}
}
}
输出
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1