Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
10哪去了In Reply To:请问下我怎么错了(内附代码) Posted by:bra at 2008-11-17 19:49:25 > /* > trie树 > */ > #include<iostream> > using namespace std; > > int ans,n,num; > char card[100000][3]; > > class trie > { > public: > trie* next[15][5]; > trie() > { > for(int i=1;i<14;i++) > for(int j=1;j<5;j++) > next[i][j]=NULL; > } > }*root; > int getValueId(char c) > { > if(c>='2'&&c<='9') > return c-'0'; > else if(c=='A') > return 1; > else if(c=='J') > return 11; > else if(c=='Q') > return 12; > else // if(c=='K') > return 13; > } > int getSuitId(char c) > { > if(c=='C') > return 1; > else if(c=='D') > return 2; > else if(c=='H') > return 3; > else return 4; > } > void insert() > { > trie *now=root; > int x,y; > > for(int k=num-1;k>=0;k--) > { > if(strlen(card[k])==3) > x=10; > else x=getValueId(card[k][0]); > > y=getSuitId(card[k][strlen(card[k])-1]); > > if(now->next[x][y]==NULL) > { > ans++; > now->next[x][y]=new trie; > } > now=now->next[x][y]; > } > } > void del(trie * now) > { > for(int i=1;i<14;i++) > for(int j=1;j<5;j++) > if(now->next[i][j]!=NULL) > del(now->next[i][j]); > delete(now); > } > int main() > { > while(scanf("%d",&n),n) > { > root=new trie(); > ans=0; > for(int i=0;i<n;i++) > { > scanf("%d",&num); > for(int j=0;j<num;j++) > scanf("%s",&card[j]); > insert(); > } > printf("%d\n",ans); > del(root); > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator