# 打印杨辉三角

```public class Main {

/**
* 计算行应该占得宽度
* 每个数字额外加了一个空格，数字的宽度加空格的宽度
* @param lastIntegers
* @return
*/
static int width_of(int[] lastIntegers) {
int width = 0;
int length = 0;
for (int lastInteger : lastIntegers) {
if (lastInteger > 0) {
width += numWidth(lastInteger);
length++;
}
}
width += length;
return width;
}

static int numWidth(int num) {
int count = 0;
while (num > 0) {
num = num / 10;
count++;
}
return count;
}

public static void main(String[] args) {
int n = 10;
int[][] result = new int[n][n];
result[0][0] = 1;
result[1][0] = 1;
result[1][1] = 1;
//构造杨辉三角
for (int i = 2; i < n; i++) {
result[i][0] = 1;
result[i][i] = 1;
for (int j = 1; j <= i - 1; j++) {
result[i][j] = result[i - 1][j - 1] + result[i - 1][j];
}
}
int maxWidth = width_of(result[n - 1]);
for (int i = 0; i < n; i++) {
int[] temp = result[i];
int temp_width = width_of(temp);
int wihteBlankLength = (maxWidth - temp_width) / 2;
for (int k = 0; k < wihteBlankLength; k++) {
System.out.print(" ");
}
for (int j = 0; j < temp.length; j++) {
if (temp[j] > 0)
System.out.print(String.format("%d", temp[j]) + " ");
}
System.out.println();
}
}

}
```