| ||||||||||
| 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 | |||||||||
请问下我怎么错了(内附代码)/*
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