1.やさしい
再帰関数の基底部(base case)とは何ですか?
- A再帰呼び出しより前に処理される、入力が最も大きい場合
- B関数の最初の行
- C最も多くのメモリを使う呼び出し
- Dさらに再帰呼び出しをせずに直接答えが得られる場合
2.やさしい
標準的な配列ベースのマージソートは、どれだけの追加メモリを使いますか?
- AO(n)
- BO(1)
- CO(n²)
- DO(log n)
3.やさしい
配列の要素にインデックスでアクセスするのにかかる時間は次のどれですか?
- AO(log n)
- BO(1)
- CO(n²)
- DO(n)
4.ふつう
1、3、4 の硬貨で金額 6 をつくるとき、貪欲な「最大の硬貨から」方式は最適解と比べて何枚の硬貨を使いますか?
- A貪欲法は 3 枚、最適解は 2 枚
- B貪欲法は 4 枚、最適解は 3 枚
- C貪欲法は 2 枚、最適解は 2 枚
- D貪欲法は 3 枚、最適解は 3 枚
5.ふつう
比較に基づくソートの最悪の場合の下界はどれですか?
- AΩ(n log n)
- BΩ(n²)
- CΩ(n)
- DΩ(log n)
6.ふつう
辺の重みが非負のグラフで、一つの始点からの最短経路を求めるアルゴリズムはどれですか?
- AKruskal 法
- B深さ優先探索(DFS)
- CDijkstra 法
- Dどの場合でも Bellman–Ford が必要
7.むずかしい
カラツバ乗算は T(n) = 3T(n/2) + O(n) を満たします。この解は何ですか?
- AΘ(n log n)
- BΘ(n²)
- CΘ(n3)
- DΘ(nlog₂ 3)、約 n1.585
8.むずかしい
単方向連結リストでは、二分探索が O(log n) 時間にならないのはなぜですか?
- A連結リストのノードでの比較は遅いから
- Bインデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
- C二分探索には少なくとも 2 倍のメモリが必要だから
- D連結リストはソートできないから
解答
- 1. D · さらに再帰呼び出しをせずに直接答えが得られる場合
- 2. A · O(n)
- 3. B · O(1)
- 4. A · 貪欲法は 3 枚、最適解は 2 枚
- 5. A · Ω(n log n)
- 6. C · Dijkstra 法
- 7. D · Θ(nlog₂ 3)、約 n1.585
- 8. B · インデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。