[1]授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
(問い1)
長さがN文字である文字列Sの中で,異なる場所に2回以上繰り返して登場する部分列の
うち,最も長いものを見つけるアルゴリズムを設計し,その詳細を説明せよ.ただし,部
分列同士の一部が重なるような場合を許すものとする(例えばS=“ababa”の場合,求め
る部分列は“aba”となる).また,そのアルゴリズムの最大時間計算量のオーダーをNで
表せ.なお,授業で紹介したストリングマッチングのアルゴリズムを一部で使用する場合
には,その詳細を省略してよい.
(問い2)
C言語(あるいはそれに類似した他の言語でも可)を用いて「複素数」というデータ構造
を定義し,これに対する四則演算(加算,減算,乗算,除算),絶対値の計算,および値の
表示を行う関数をプログラムせよ.値の表示は,実部と虚部による直交座標表現と,絶対
値と偏角による極座標表現の,2通りを用意すること.解答はそれぞれの関数についてソ
ースコードの形で示せ.構造体,ポインタ,クラスなどの概念を使用してもよい.
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン):emacs
 [3.3] 言語:C
[4] 期限:2005年8月4日24:00まで
[5] その他の制限:高度過ぎなければよいです