タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

アルゴリズムに関するaritekuのブックマーク (3)

  • 文字列検索(BM法)

    Boyer-Mooreのアルゴリズム BM法の原理 KMP法は『理論的には優れているが,実戦には弱い』 というアルゴリズム でした。 これに対して,BM法は『理論的にも優れていて,実戦にも強い』 と いう頼もしいアルゴリズムです。 実用的には,BM法は最も速い文字列探索ア ルゴリズムだということができます。パターンとテキストを重ね合わせて,末尾から先頭に向かって順番に文字を 比較していき,パターンとテキストの不一致が見つかったら,不一致の原因に なった文字に応じてパターンをずらす分量を決める,というのがBM法の考 え方です。 たとえば,左の図のようにテキストabdefghにパターンabcを重ね合わ せて比較することを考えましょう。 まずパターンの最後の文字をテキストと比 較します(左図(1))。 パターンの最後の文字はcで,対応するテキストは dになっています。

  • C言語の研究・演習編1

    <演習編> C言語の研究・演習編1 前回まで一生懸命C言語の文法や標準ライブラリを学んできた。長い道のりであった.... これからは、プログラムを作成する上で知っておかねばならないアルゴリズムについて、例題を多用しながら研究して行こう。 第1章 文字列の操作 C言語では文字列の取り扱いは重要なテーマである。 これは標準ライブラリ<string.h>がかなり充実していることからもうかがい知ることができるだろう。 それでも、やはり荒削りなC言語である。BASICなどのように、便利で多種多彩な関数はない。 必要な関数は標準ライブラリをもとにして自分で作って行くしかない。それがまた楽しいところでもある。 1 文字列の探索 たとえば、長い文字列から特定の文字列を検索するにはどうしたらいいだろう。標準関数strcmpやstrncmpはそのままでは使えない。 長い文字列a[n]から文字列b[m]を探す場

  • 重複しない組み合わせのプログラム - OKWAVE

    上限のある重複組合わせ(?) 以下の42個の数字から、n個 抜き取った組合わせは何通りかという問題がありまして(自作)。 1, 5, 6, 6, 8, 8,10,13,13,14, 14,15,17,18,18,19,21,21,22,25, 26,27,28,28,30,30,30,30,30,31, 31,34,35,35,36,39,40,40,41,41, 41,42 総当りで出力し、カウントをするプログラムはできまして(n=0個から) 1 26 337 2902 18667 95612 405931 1468386 4616880 12809820 31736232 70875642 143789049 ・・・ という感じで答えはわかっているのですが、時間もかかるし(3sぐらい)実際の組合わせは知る必要はないので もっと数学的に計算でできないのか、考えているんですけど解りません。

    重複しない組み合わせのプログラム - OKWAVE
  • 1