回答編集履歴
2
forループ間違いを修正
answer
CHANGED
@@ -11,8 +11,8 @@
|
|
11
11
|
と対応させます。すると、 (2, 3) と (3, 4) をナップサックに詰めることを 5 (== 1 + 4) という値で表すことができます。値が0ならナップサックは空、15(==1+2+4+8)なら4アイテム全てを詰める、という意味になります。
|
12
12
|
つまり、4個のアイテム全ての組合せは0~15という16種類の値で表現できることになり
|
13
13
|
```
|
14
|
-
for (ksack = 0; ksack < 16; ksack) {
|
14
|
+
for (ksack = 0; ksack < 16; ksack++) {
|
15
|
-
|
15
|
+
// ksackの値=アイテムの組合せを評価する
|
16
16
|
```
|
17
17
|
という格好の、**一重の for ループが総当たり検査になる**のです。
|
18
18
|
|
1
majipon -> majiponi
answer
CHANGED
@@ -23,4 +23,4 @@
|
|
23
23
|
bit の値は 1, 2, 4, 8 ... と変化します。そこで
|
24
24
|
``` if ((ksack & bit) != 0) ``` と、AND演算(というビット演算)によって、**ksack にどのアイテムが含まれるかを判定する**ことに使えます。
|
25
25
|
|
26
|
-
※以上、私は
|
26
|
+
※以上、私は majiponi さんと違うコードで試したので、説明中のコード表記が異なりますが、言いたいことは伝わるだろうと思います。
|