【全探索2】コップの水《新・Bランクup》

新・Bランクレベルアップメニュー【全探索 2】コップの水

【全探索 2】コップの水 コード (C++実装例参照)

reader.on('close', () => {
   const [N, X] = lines[0].split(' ').map(Number);
   const W = [];
   let ans = 0;
   for (let i = 0; i < N; i++) {
      W.push(Number(lines[i + 1]));
   }
   for (let i = 0; i < Math.pow(2, N); i++) {
      let sum = 0;
      let tmp = i;
      for (let j = 0; j < N; j++) {
         if (tmp % 2 === 1) {
            sum += W[j];
         }
         tmp = parseInt(tmp / 2);
      }
      if (sum <= X) {
         ans = Math.max(ans, sum);
      }
   }
   console.log(ans);
});
hogeちゃんの画像

bit全探索…。

C++の解答コード例を参照しました。

コメント