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