View on GitHub

cp-library

subset sum problem

C++ 用ライブラリ一覧に戻る

ソースコード

nachia/set/subset-sum.hpp

主な機能

部分和問題の競プロ向け解法である。

部分和問題

$n$ 個の整数 $A _ 0,A _ 1,\ldots ,A _ n$ のうち $0$ 要素以上を選んで総和を $X$ にすることができるか? あるいは、総和が $X$ になるような選び方を $1$ つ求めよ。

関数

SubsetSumHalfBruteforce

std::vector<int> SubsetSumHalfBruteforce(long long X, std::vector<long long> A);

半分全列挙による解法。

部分和を $X$ とできない場合、 {-1} を返す。

部分和を $X$ とできる場合、 $0$ と $1$ からなる長さ $n$ の配列 R を返す。この配列は $\displaystyle \sum _ {i=0}^{n-1}R _ iA _ i=X$ を満たす。


TOP PAGE