データ構造とアルゴリズム

容量8のナップサックに、(重さ, 価値) が (2, 3)、(3, 4)、(4, 5)、(5, 6) の4つの品物から選んで入れる。各品物は1つずつしかなく、分割できない。重さの合計が8以下で、価値の合計の最大値はいくらか。

  1. A7
  2. B9
  3. C10
答えと解説を見る

正解:C. 10

重さ3と5の品物を選ぶと重さ8で価値は 4 + 6 = 10 になり、これが最大です。重さ2と5(価値9)や3と4(価値9)も入りますが10には届かず、3つ選ぶと最も軽い 2 + 3 + 4 でも9で容量を超えます。重さあたりの価値の高い順に詰める貪欲法では、重さ2と3(価値7)を入れた後に残り3の容量に入る品物がなく、7で止まります。動的計画法では「容量 c までで達成できる最大の価値」を品物ごとに表で更新し、品物の数 n と容量 W に対して O(nW) で最適な値が求まります。

  • A. 重さあたりの価値の高い順に詰める貪欲法の結果で、最適ではありません。
  • B. 重さ2と5、または3と4の組み合わせの価値で、最大ではありません。
  • C. 正しい。重さ3と5の品物で、容量8をちょうど使い価値10になります。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. 文字列の中からパターンを探すBM法(ボイヤー・ムーア法)の特徴として正しいものはどれか。
  2. 可変長配列で、容量が満杯のときに要素を追加すると、2倍の容量の領域を新たに確保して全要素をコピーする。容量1の空の配列に要素を1つずつ1,000個追加したとき、コピーされる要素の総数はいくつか。
  3. 要素数が多く、負荷率を0.5程度に保ったハッシュテーブルで、線形探査のオープンアドレス法が、チェイン法(連結リストでつなぐ方法)より速くなりやすい理由として最も適切なものはどれか。
  4. GPUのような並列処理の装置で並べ替えを行うときに、バイトニックソートのような、比較・交換の手順が決まったソート(ソーティングネットワーク)が使われることがある。その理由として正しいものはどれか。
  5. 要素数 n の配列で、異なる2つの要素の組をすべて1回ずつ比べる処理(i 番目の要素を、それより後ろにあるすべての要素と比べることを、i を1つずつ進めて繰り返す二重ループ)の計算量はどれか。