I think you should use TST data structure for this problem.
You can find some implementation HERE <http://bit.ly/ADPNn5>

On Thu, Feb 16, 2012 at 11:32 AM, pavan <pavankri...@gmail.com> wrote:

> i am getting WA by implementing TRIE .can anyone help me with the test
> cases for which the following code is failing.
>
> #include<stdio.h>
> #include<stdlib.h>
> #include<string.h>
> #include<iostream>
> #define MAX 26
> #define LEN 1000
> using namespace std;
>
>
> struct node
> {
>        char c;
>        int isterminal;
>        int no_children;
>        struct node* children[MAX];
> };
> struct node* createnode(char ch)
> {
>        struct node* nl=(struct node*)malloc(sizeof(struct node));
>        if(nl==NULL)
>        printf("memory allocation error");
>        else
>        {
>                nl->c=ch;
>                nl->no_children=0;
>                nl->isterminal=-1;
>        }
>        return nl;
> }
> struct node* insert(char* str,int i,int len,struct node* root)
> {
>        char ch=str[i];
>        if(i==len)
>        {
>                root->isterminal=1;
>                return root;
>        }
>        if(root->children[ch-'a']==NULL || root->children[ch-'a']-
> >isterminal==-1)
>        {
>                struct node* nl=createnode(ch);
>                root->children[ch-'a']=nl;
>                root->children[ch-'a']->isterminal=0;
>                root->no_children++;
>        }
>        root->children[ch-'a']=insert(str,i+1,len,root->children[ch-'a']);
>        return root;
> }
> int countchildren(struct node* root,char* buffer,int len)
> {
>        int index=0;
>        static int count=0;
>        if(root->isterminal==1)
>        {
>                printf("%s\n",buffer);
>                count++;
>        }
>        for(int i=0;i<MAX;i++)
>        {
>                        if(root->children[i]!=NULL)
>                        {
>                                buffer[len]=root->children[i]->c;
>                                buffer[len+1]='\0';
>
>  countchildren(root->children[i],buffer,len+1);
>                        }
>        }
>        return count;
> }
> int solve(char* str,int i,int len,struct node* root)
> {
>        int c;
>        char ch=str[i];
>        char buffer[LEN];
>        if(i<len)
>        {
>                if(root==NULL || root->children[ch-'a']==NULL)
>                return 0;
>                else
>                {
>                        return solve(str,i+1,len,root->children[ch-'a']);
>                }
>        }
>        else
>        {
>                strcpy(buffer,str);
>                c=countchildren(root,buffer,strlen(str));
>                //printf("count %d\n",c);
>                return 1;
>        }
> }
> int main()
> {
>        struct node* trie=createnode('$');
>        char str[1000];
>        int t,k;
>        scanf("%d",&t);
>        while(t--)
>        {
>                scanf("%s",str);
>                trie=insert(str,0,strlen(str),trie);
>        }
>        scanf("%d",&k);
>        for(int i=1;i<=k;i++)
>        {
>                scanf("%s",str);
>                printf("Case #%d:\n",i);
>                if(!solve(str,0,strlen(str),trie))
>                        printf("No match.\n");
>        }
>        return 0;
> }
>
> On Feb 15, 11:56 am, shady <sinv...@gmail.com> wrote:
> > will TRIE be the best solution for this problem ?
> >
> > Link<http://www.spoj.pl/problems/DICT/>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to