この課題では、次のように、入力として重みのコンマ区切りリストを受け取ります。
1,3,4,7,8,11
そして、そのセットに追加できる最小量の重みを出力する必要があります。たとえば、このセットの出力は次のようになります
1,3,7
これらの重みをこれら3つだけで表すことができるからです。
1 = 1
3 = 3
1+3 = 4
7 = 7
1+7 = 8
1+3+7 = 11
複数のソリューションが存在する場合があります。例えば、入力のためのソリューションは、1,2可能性があり1,1、または1,2。入力セットを表すことができる重みの最小量が検出される限り、これは有効なソリューションです。
重りを複数回使用することはできません。1つを2回使用する必要がある場合は、2回出力する必要があります。たとえば、2,3はに対して2回2,3,5,7使用できないため、の有効なソリューションではありません。22+2+3=7
入力は、重複した番号がないことが保証されています。
これはコードゴルフなので、文字数による最も短いコードが優先されます。
ネットワークアクセスが禁止されている(あなたの「賢い」のどれもそうwgetソリューション@JohannesKuhn 咳 咳);)
最も単純なケース:
1,5,6,9,10,14,15 => 1,5,9
7,14,15,21,22,29 => 7,14,15
4,5,6,7,9,10,11,12,13,15,16,18 => 4,5,6,7
2,3,5,7 => 2,2,3 or 2,3,7
そして、よりトリッキーなもの:
10,16,19,23,26,27,30,37,41,43,44,46,50,53,57,60,61,64,68,71,77,80,84,87
=> 3,7,16,27,34
20,30,36,50,56,63,66,73,79,86
=> 7,13,23,43
27,35,44,46,51,53,55,60,63,64,68,69,72,77,79,81,86,88,90,95,97,105,106,114,123,132
=> 9,18,26,37,42
7,7,7,8上記)、複雑さが大幅に増大します。
n入力の重みmがあり、最大である場合、サブシーケンスのすべてのサブシーケンスを列挙し(1..m)、各サブシーケンスについて、1とn各インスタンスのすべての組み合わせを列挙しますシーケンスの要素。)