これは、指定されたセットとターゲット値からtrueまたはfalseを取得するソリューションの1つです。
bool subsetSumExists(Set<int> & set, int target) {
if (set.isEmpty()) {
return target == 0;
} else {
int element = set.first();
Set<int> rest = set - element;
return subsetSumExists(rest, target)
|| (subsetSumExists(rest, target- element));
}
}
ただし、このソリューションはtrueまたはfalseの値のみを返します。サブセットに含まれる要素(合計するとターゲットに等しくなるセット)も取得するにはどうすればよいですか?
動的計画法を使用する必要がありますか?私が知っているように、Coz ..再帰は実際にスタックを構築しており、関数が値を返した後、フレーム内の値も破棄されます。
それで、合計が目標値に等しい要素を取得することは可能ですか?
オブジェクトを渡すことは問題の解決策ですか?
ありがとうございました