Cod sursa(job #1945772)

Utilizator B_RazvanBaboiu Razvan B_Razvan Data 29 martie 2017 17:48:57
Problema Trie Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <cstdio>

using namespace std;

struct trieNode
{
    int ap, nrCopii;
    trieNode*copii[26];
    trieNode()
    {
        ap=0;
        nrCopii=0;
        for(int i=0; i<26; ++i)
            copii[i]=NULL;
    }
}*root;

void insertTrieNode(trieNode*&root, char *p)
{
    if(!*p)
    {
        root->ap++;
        return;
    }
    if(root->copii[*p-'a'])
    {
        insertTrieNode(root->copii[*p-'a'], p+1);
        return;
    }
    root->copii[*p-'a']=new trieNode;
    insertTrieNode(root->copii[*p-'a'], p+1);
}

void stergeTrieNode()
{

}

void afiseazaNrAparitii(trieNode*&root, char *p)
{
    if(!*p)
    {
        printf("%d\n", root->ap);
        return;
    }
    afiseazaNrAparitii(root->copii[*p-'a'], p+1);
}

void afiseazaLungPrefixMaxim()
{

}

void read()
{
    int operatie;
    char str[26];
    root=new trieNode;
    while(scanf("%d %s", &operatie, &str)==2)
    {
        char *p=str;
        if(operatie==0)
            insertTrieNode(root, p);
        else if(operatie==1)
            stergeTrieNode();
        else if(operatie==2)
            afiseazaNrAparitii(root, p);
        else
            afiseazaLungPrefixMaxim();
    }
}

int main()
{
    freopen("trie.in", "r", stdin);
    freopen("trie.out", "w", stdout);
    read();
    return 0;
}