www.pudn.com > zhejiang_university_acm_onlinejudge_code.rar > zp1038.cpp


#include  
#include  
 
struct chrtp 
{ 
  int dt; 
  struct chrtp* pt[26]; 
}; 
 
int ln,k,f; 
char st[110]; 
 
void addtotree(int m,struct chrtp* cur) 
{ 
  if (mpt[t]==NULL) 
    { 
      cur->pt[t]=new(struct chrtp); 
      for (i=0;i<26;i++) 
        cur->pt[t]->pt[i]=NULL; 
      cur->pt[t]->dt=k; 
    } 
    else 
      cur->pt[t]->dt+=k; 
    addtotree(m+1,cur->pt[t]); 
  } 
} 
char smx[110],sm[110]; 
int r, 
    loc[8]={0,3,6,9,12,15,19,22}, 
    col[8]={3,3,3,3,3,4,3,4}; 
 
void scantree(int m,int n,int d,struct chrtp* cur) 
{ 
  if (m) 
  { 
    int i,t=st[n-m]-'2'; 
    for (i=loc[t];ipt[i]!=NULL) 
      { 
        sm[n-m]=i+'a'; 
        scantree(m-1,n,cur->pt[i]->dt,cur->pt[i]); 
      } 
  } 
  else 
    if (d>r) 
    { 
      int i; 
      for (i=0;ipt[i]=NULL; 
 
    scanf("%d",&n); 
    for (i=0;i