• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Może ktoś wyjaśnicz ten algorytm?

0 głosów
168 wizyt
pytanie zadane 4 kwietnia 2022 w C i C++ przez KOdeRKA Nowicjusz (120 p.)
zamknięte 4 kwietnia 2022 przez KOdeRKA
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <cmath>

using namespace std;

int make_hash(char s,int off,int p,int exp)
{
    int hash1;
    hash1 = ((int)s-off)*(int)pow(p,exp);
    return hash1;
}

int update_hash(int hash1,int s_prev,int s_next,int off,int p,int exp)
{   int u_hash;
    u_hash=hash1-((int)s_prev-off)*pow(p,exp);
    u_hash=u_hash*p;
    u_hash=u_hash+((int)s_next-off);
    return u_hash;
}

bool naive(string pattern, string text)
{
 int lenP=pattern.size();
 bool flag = false;
 for (int i = 0; i < lenP; i++)
 {
  if (pattern[i] != text[i])
  {
   flag = true;

  }
 }
 return flag;
}

void kr(string pattern,string text,int p,int off,int z)
{
    int lenP=pattern.size();
    int lenT=text.size();
    int hashP=0;
    int hashT=0;
    int i=0;
    while(i<lenP)
    {
        hashP=hashP+make_hash(pattern[i],off,p,lenP-i-1);
        hashT=hashT+make_hash(text[i],off,p,lenP-i-1);
        i=i+1;
    }
    i=lenP;
    int j=0;

    while(i<=lenT)
    {
        if(hashP==hashT)
        {
           naive(pattern,text);
        }
        if(hashP==hashT)
        {
            cout<<"Linijka "<<z<<": "<<j<<endl;
        }

        if(i<lenT)
        {
            hashT=update_hash(hashT,text[j],text[i],off,p,lenP-1);
        }
        i=i+1;
        j=j+1;

    }

}

int main()
{

    ifstream file1;
    string pattern,text;
    int z = 1;
    file1.open("tekst.txt");
    file1 >> pattern;

   while(!file1.eof())
   {
       getline(file1,text);
       //cout<<text<<endl;
       kr(pattern,text,3,71,z);
       z = z +1;

   }

    return 0;
}
komentarz zamknięcia: już nieaktualne

Podobne pytania

0 głosów
1 odpowiedź 1,046 wizyt
pytanie zadane 11 stycznia 2021 w PHP przez Głupia546 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 494 wizyt
0 głosów
1 odpowiedź 458 wizyt
pytanie zadane 2 listopada 2018 w PHP przez Krzysio4224 Obywatel (1,690 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,322 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...