Pagini recente » Cod sursa (job #87138) | Cod sursa (job #766511) | Cod sursa (job #2778393) | Cod sursa (job #1861183) | Cod sursa (job #2532827)
#include<bits/stdc++.h>
using namespace std;
int c;
ifstream f("trie.in");
ofstream g("trie.out");
struct trie
{
int val,nr;
trie *fii[27];
};
char x[29];
trie *t = new trie();
void adauga(trie*poz, char*s)
{
poz->nr++;
if(*s=='\0')
{
poz->val++;
return;
}
if(poz->fii[*s-'a']==NULL)
{
poz->fii[*s-'a']=new trie();
}
adauga(poz->fii[*s-'a'], s+1);
}
void stergere(trie*poz, char*s)
{
poz->nr--;
if(*s=='\0')
{
poz->val--;
return;
}
if(poz->fii[*s-'a']==NULL)
{
return;
}
}
int copy1(trie*poz,char*s)
{
if(*s=='\0')
{
return poz->val;
}
if (poz->fii[*s-'a'] == NULL)
{
return 0;
}
return copy1(poz->fii[*s-'a'],s+1);
}
int copy2(trie*poz,char*s,int pasi)
{
if(*s=='\0')
{
return pasi;
}
if (poz->fii[*s-'a'] == NULL)
{
return pasi;
}
else
return copy2(poz->fii[*s-'a'],s+1,pasi+1);
}
int main()
{
while(f>>c>>x)
{
if(c==0)
{
adauga(t,x);
}
else if(c==1)
stergere(t,x);
else if(c==2)
g<<copy1(t,x)<<"\n";
else
g<<copy2(t,x,0)<<"\n";
}
for (int i=1;i<=26;++i)
{
x[i]='\0';
}
}