ProgrammingPearls

珠玉のプログラミング読了〜!

読み終わった!とりあえず課題図書その1をクリアした! まず巻末の著者インタビューが楽しい.(そっからかよ) 著者(毒舌)vsインタビュアー(けんか腰)な構図でエピローグとは思えない戦いが…!?インタビュアー の こうげき! 問 : それでは、この版はどういう…

14.6 問題 5 瓶詰め問題解いた

読み終わったけど,今朝やってみたら意外と解けたので書いておく. ヒープは簡単に実装できる割に凄い.でもプライオリティキューとか聞くとどうしても, スケジューラ->形式検証必須(平等とか)->手が出せないorz みたいな印象が…なぜだろう? 問題 それぞれ0か…

15.5問題8 K回以上重複する最長の部分文字列を探索

[前回の基本形に重複する回数を数える部分を追加しただけ. 入力に作ったテキストの末尾に,勝手に改行が追加されて鬱陶しかったのでヌル文字で上書き. :p // K回以上重複するフレーズを探索する void find_common_word(FILE * fp, int N, int K){ char * buff…

15章 Suffix配列を実装してみた

そろそろ終盤! 15章の問題に入る前にこの章の主題(?)を実装した. 文字列内の最長部分一致を見つける. このアルゴリズムをSuffix配列と云うらしい.qsortは不便だということを再確認(仕方ないけど). #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> using namespace</cstring></cstdio></cstdlib></iostream>…

13.6 問題7 解答を実装してみた(STL禁止)

終盤に来て実装の問題が増える…. 答えは載ってるけど,どうせ実装しないと覚えなさそう. ということで以下写経.(report関数は省略)insert(int)の実装は楽しい. ポインタのポインタを使うことで簡潔なコードで記述できる :) (宿題で提出したコードはどんなんだ…

11章の問題11

配列を基準値との大小関係で分割する.とりあえず普通の分割. xs[0]未満の要素を左に集める. // 基準要素(配列の先頭)未満の要素を先頭に移動する void split2(int * xs, int l, int u){ if(l>u){ return ; } int t = xs[l]; // 基準 int m = l; // t< 要素の…

10.6 問題回答

気まぐれに解答載せるのやめて欲しい.7. 関数のアドレスをインデックスと対応付けて,実行回数の配列と時間を格納するデータの配列を使う /* イメージ */ int fs( void (f*)(void) ); // プログラムカウンタから関数ポインタを取り出して // 呼び出し回数の計…

8.4

ある配列に含まれる,全ての部分配列の中で, [要素の合計値が最大になる部分配列]の要素の合計値を求める.以下は本文中で紹介されているアルゴリズム. O(n)で動作します. int find_max(int * xs, int N){ int currmax=0; int maxval=0; for(int i=0; i

4.6 問題7

この本たまに,数学の未解決問題をしれっと問題に入れてるんだけどそんなのアリなの?w xが[0,1)の範囲で交わらない直線のセットが与えられる. 与えられる直線はy切片が小さい順に与えられる. 与えられる座標(x,y)を挟む二本の直線の座標を求める. 幾何の問…

2.6 問題2 回答

バイナリサーチ練習問題. 配列中に二度以上含まれる要素を一つ見つける. 再帰呼び出しする度に,要素毎にコピーした新しい配列を渡さなければならないので, シーケンシャルなファイルにしか意味はない. beginとendは配列に含まれる整数の範囲を示す.(STLと同…

珠玉のプログラミング 2章 問題3 回答

icfp-pcの時に個人的に出された課題図書(のうちの1冊)珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造作者: ジョンベントリー,Jon Bentley,小林健一郎出版社/メーカー: ピアソンエデュケーション発売日: 2000/10メディア: 単行本購入: 30人 ク…