ГЛАВНАЯ RU typewriter

older-tomato

Треугольник Паскаля на Java

Двухмерный массив • Биномиальные коэффициенты 09.09.2021

Рассмотрим вариант реализации треугольника Паскаля на Java. Для простоты хранения и обработки данных представим треугольник в виде двухмерного массива, в котором элементы первой строки и колонки равны единице, а все остальные элементы — есть сумма двух предыдущих элементов в строке и в колонке.

A[i][j] = A[i][j-1] + A[i-1][j];

Например, при {n = 8} массив будет выглядеть следующим образом:

  1  1  1  1  1  1  1  1
  1  2  3  4  5  6  7
  1  3  6 10 15 21
  1  4 10 20 35
  1  5 15 35
  1  6 21
  1  7
  1

Создаём и заполняем двухмерный массив с убывающей длиной строки:

int n = 8;
// массив из 'n' строк
int[][] arr = new int[n][];
// обходим строки массива
for (int i = 0; i < n; i++) {
    // строка из 'n-i' элементов
    arr[i] = new int[n - i];
    // обходим элементы строки
    for (int j = 0; j < n - i; j++) {
        if (i == 0 || j == 0) {
            // элементы первой строки
            // и колонки равны единице
            arr[i][j] = 1;
        } else {
            // все остальные элементы — есть сумма двух
            // предыдущих элементов в строке и в колонке
            arr[i][j] = arr[i][j - 1] + arr[i - 1][j];
        }
    }
}

Выводим массив построчно:

// обходим строки массива
for (int[] row : arr) {
    // обходим элементы строки
    for (int el : row)
        // пробел и двузначное число
        System.out.printf(" %2d", el);
    // переход на новую строку
    System.out.println();
}

© Головин Г.Г., Код с комментариями, 2021