第 n 行 (0-indexed) 有 n+1 個數。
`C(n, k) = C(n-1, k-1) + C(n-1, k)`,邊界 `C(n, 0) = C(n, n) = 1`。
#include
using namespace std;
int main() {
int n;
while (cin >> n) {
if (n <= 0) continue;
vector> a(n, vector(n, 0));
for (int i = 0; i < n; ++i) {
a[i][0] = a[i][i] = 1;
for (int j = 1; j < i; ++j)
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= i; ++j)
cout << a[i][j] << (j==i?'\n':' ');
}
}
return 0;
}
import java.util.Scanner;
public class PascalTriangle {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
if (n <= 0) continue;
int[][] a = new int[n][n];
for (int i = 0; i < n; ++i) {
a[i][0] = a[i][i] = 1;
for (int j = 1; j < i; ++j)
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= i; ++j)
System.out.print(a[i][j] + (j==i?"\n":" "));
}
}
}
}
只需一維數組 `row`,從右向左更新:`row[j] += row[j-1]` (j=i..1),`row[0]=1`。輸出 `row[0..i]`。空間 O(n)。
楊輝三角是組合數計算的經典可視化。雙層循環構建二維數組最直觀;滾動數組更節省空間。C++ `vector` 與 Java `int[][]` 用法幾乎一致,邏輯通用。