Link Search Menu Expand Document
あるまかんライブラリ

:heavy_check_mark: binomialTable() (二項係数テーブル $O(N^2)$)
(Math/Combinatorics/binomial-table-O(NN).cpp)

Verified with

Code

#pragma once
#include <vector>

/**
 * @brief binomialTable() (二項係数テーブル $O(N^2)$)
 * パスカルの三角形により N 以下の二項係数を求める。
 */
template <class T>
auto binomialTable(int N) {
    using std::vector;
    vector<vector<T>> binomial(N + 1);
    for (int i = 0; i <= N; ++i) {
        binomial[i].resize(i + 1);
        for (int j = 0; j <= i; ++j) {
            if (j == 0 || j == i)
                binomial[i][j] = 1;
            else
                binomial[i][j] = binomial[i - 1][j - 1] + binomial[i - 1][j];
        }
    }
    return binomial;
}
#line 2 "Math/Combinatorics/binomial-table-O(NN).cpp"
#include <vector>

/**
 * @brief binomialTable() (二項係数テーブル $O(N^2)$)
 * パスカルの三角形により N 以下の二項係数を求める。
 */
template <class T>
auto binomialTable(int N) {
    using std::vector;
    vector<vector<T>> binomial(N + 1);
    for (int i = 0; i <= N; ++i) {
        binomial[i].resize(i + 1);
        for (int j = 0; j <= i; ++j) {
            if (j == 0 || j == i)
                binomial[i][j] = 1;
            else
                binomial[i][j] = binomial[i - 1][j - 1] + binomial[i - 1][j];
        }
    }
    return binomial;
}
Back to top page