第一章の古典的アルゴリズムの顔の質問
1.1文字列のマッチング問題
- ①「あなたは私の悪い悪いが、私はあなたを喜ばないということではない良い方法はある」文字列STR1 =を持ち、サブ文字列STR2は=「私はあなたのためにとても悪いんです。」
- ②今、私たちはstr1がstr2のが含まれているかどうかを決定する必要があり、存在する場合、問題の最初の出現に戻らないにしてください、それは-1を返します。
- 試合を完了するために最速のスピードと③の要件?
- アイデアは、①:マッチング暴力を
- たとえば、次のように最初の「I」は、「ノー」である第一STR1を見つけ、中str1はstr2のと一致しないと一致し、str1が「良い」一致で継続して、知って、引き続き、一致しないマッチングを持ちます " I「という言葉、そして飲み続ける」私は「文字の後ろに」私が「行くとstr1があり、」いいえ「が一致して、繰り返し「一致、一致するものが見つからなかったが、中にSTR2を使用し続け、」しない「に行くとSTR1」良いですこのプロセスは、にマッチする部分文字列内のすべての文字とstr1はstr2のを知っています。
- 質問:一致しない場合は、裁判官、時間の無駄を上に移動、1を移動する時間、バックトラックが多い場合は解決するために暴力を一致させます。
- アイデア②:KMPアルゴリズム(部分一致テーブル)。
ハノイの1.2タワー
- ディスク①すべては、列C列に移動しました。
- ②ディスクは小さなディスクを拡大することはできません。
- ③唯一の3つの列の間でディスクを移動することができます。
- アイデアは:除算を使用してアルゴリズムを征服します。
1.3八クイーンズ問題
- 西フェリックスベテル忙しい国際選手が1848年に発表:チェスの8×8のグリッド上で8つのクイーンを置くこと、それはつまり、お互いに合計することはできません。任意の2つのクイーンが同じ行にすることはできません、同じ列または同じスラッシュと場所にありますどのように多く尋ねました。92種類。
- アイデア:バックトラックアルゴリズム。
1.4乗馬ボード(騎士が動き回ります)
- また、アルゴリズムの周りの騎士旅行として知られている乗馬ボードアルゴリズム。
- 馬のボックスには、ランダムに国際チェス8 * 8のチェス盤の上に、馬はチェス行く(馬歩い日)のルールに従って移動します。これは、各ボックスは一度だけ入力されたチェス盤の上のすべての64個の正方形を旅している必要があり。
- アイデア:図の最適化のトラバーサルアルゴリズム(DFS)の深さ+貪欲な最適化アルゴリズム。
第II章データ構造とアルゴリズムの重要性
- 大量のデータ計算は、高速演算残っている場合、アルゴリズムは、プログラムの魂であり、プログラムが優れたものとすることができます。
- 一般来讲,程序会使用内存计算框架(如Spark)和缓存技术(如Redis)来优化程序,那么这些计算框架和缓存技术,其核心功能是什么?