分割の列挙
ソースコード
nachia/set/enumerate-partitions.hpp
主な機能
非負整数 $n$ に対して $n$ の分割とは、正整数からなる多重集合であって、要素の総和が $n$ であるものである。 $n$ を与えると、これを全列挙する。
関数
EnumeratePartitions
std::vector<CsrArray<int>> EnumeratePartitions(int n)
- $0\leq n$
$n$ 以下の非負整数 $m$ それぞれについて、 $m$ の分割を列挙する。
返り値を A
とすると、 A[m]
は $m$ の分割をすべて列挙したものである。 A[m][i]
は $m$ の分割であるような多重集合を表す。各多重集合は、要素を昇順に並べた列で表現されている。