Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

パターン検索のためのナイーブアルゴリズムのためのCプログラム


Cでのパターンマッチング −文字列が別の文字列に存在するかどうかを確認する必要があります。たとえば、文字列「algorithm」は文字列「naivealgorithm」内に存在します。見つかった場合、その場所(つまり、存在する位置)は次のようになります。表示されます。2つの文字配列を受け取り、一致が発生した場合は位置を返し、それ以外の場合は-1を返す関数を作成する傾向があります。

Input: txt = "HERE IS A NICE CAP"
   pattern = "NICE"
Output: Pattern found at index 10
Input: txt = "XYZXACAADXYZXYZX"
   pattern = "XYZX"
Output: Pattern found at index 0
   Pattern found at index 9
   Pattern found at index 12

ナイーブパターン検索でこの問題を解決しています。このアルゴリズムは、小さいテキストに役立ちます。ナイーブは、ある文字列が別の文字列内のどこにあるかを確認するためのシンプルで非効率的な方法です。文字列が存在する可能性のあるすべての場所を1つずつ調べて、そこにあるかどうかを調べます。

ナイーブアルゴリズムの時間計算量はO(mn)です。ここで、mは検索するパターンのサイズ、nはコンテナ文字列のサイズです。

パターン検索は、コンピュータサイエンスにおいて非常に重要な問題です。メモ帳/単語ファイル、ブラウザ、データベース、または一部の情報で文字列を検索する場合は常に、パターン検索アルゴリズムを使用して検索結果を表示します。

アルゴリズム

naive_algorithm(pattern、text)

入力 −テキストとパターン

出力 −パターンがテキストに存在する場所

Start
   pat_len := pattern Size
   str_len := string size
   for i := 0 to (str_len - pat_len), do
      for j := 0 to pat_len, do
         if text[i+j] ≠ pattern[j], then
         break
   if j == patLen, then
   display the position i, as there pattern found
End

#include <stdio.h>
#include <string.h>
int main (){
   char txt[] = "tutorialsPointisthebestplatformforprogrammers";
   char pat[] = "a";
   int M = strlen (pat);
   int N = strlen (txt);
   for (int i = 0; i <= N - M; i++){
      int j;
      for (j = 0; j < M; j++)
         if (txt[i + j] != pat[j])
      break;
      if (j == M)
         printf ("Pattern matches at index %d \n", i);
   }
   return 0;
}

出力

Pattern matches at 6
Pattern matches at 25
Pattern matches at 39

  1. 平行四辺形の円周のためのCプログラム

    平行四辺形の辺が与えられ、タスクは、与えられた辺で平行四辺形の円周を生成し、結果を表示することです 平行四辺形とは何ですか? 平行四辺形は、-を持つ2次式の一種です。 反対側が平行 反対の角度は等しい ポリゴンの対角線は互いに二等分します 下の図に示されている「a」と「b」は、平行四辺形の辺であり、平行四辺形が図に示されています。 平行四辺形の周囲長/円周は次のように定義されます − 平行四辺形の円周=2(a + b) =2 * a + 2 * b 例 Input-: a = 23 and b = 12 Output-: Circumference of a paral

  2. 最適なページ置換アルゴリズムのためのC++プログラム

    与えられたページ番号とページサイズ。タスクは、最適なページ置換アルゴリズムを使用してメモリブロックをページに割り当てるときのように、ヒットとミスの数を見つけることです。 最適なページ置換アルゴリズムとは何ですか? 最適なページ置換アルゴリズムは、ページ置換アルゴリズムです。ページ置換アルゴリズムは、どのメモリページを置換するかを決定するアルゴリズムです。最適なページ置換では、実際には実装できませんが、近い将来に参照されないページを置換しますが、これは最適であり、ミスが最小限であり、最適です。 例を使って図式的に説明して理解しましょう。 ここで、1、2、3を割り当てた後、メモリが