• POJ3283+字典树


    简单的字典树

      1 /*
      2 字典树
      3 构造字典树。注意初始化!
      4 */
      5 #include<stdio.h>
      6 #include<string.h>
      7 #include<stdlib.h>
      8 #include<algorithm>
      9 #include<iostream>
     10 #include<queue>
     11 #include<map>
     12 #include<stack>
     13 #include<set>
     14 #include<math.h>
     15 using namespace std;
     16 typedef long long int64;
     17 //typedef __int64 int64;
     18 typedef pair<int64,int64> PII;
     19 #define MP(a,b) make_pair((a),(b)) 
     20 const int maxn = 53;
     21 const int maxm = 100005;
     22 const int inf = 0x7fffffff;
     23 const double pi=acos(-1.0);
     24 const double eps = 1e-8;
     25 
     26 int a[ maxm ];
     27 struct tree{
     28     tree* next[ maxn ];
     29     //bool lev;
     30 };
     31 tree root;
     32 int tot;
     33 
     34 int getval(char mod[],char aim)
     35 {
     36     int i;
     37     for(i=0;mod[i];i++)
     38     {
     39         if(mod[i]==aim)return i;
     40     }
     41     return -1;
     42 }
     43 
     44 int getval(char s[])
     45 {
     46     char value[15]="A234567891JQK";
     47     char suit[10]="CDHS";
     48     int a=getval(value,s[0]);
     49     int len=strlen(s);
     50     int b=getval(suit,s[len-1]);
     51     return a*4+b;
     52 }
     53 
     54 void init(){
     55     tot = 0;
     56     for( int i=0;i<maxn;i++ )
     57         root.next[i] = NULL;
     58     //printf("AC=%d
    ",getval("AC"));
     59     //printf("AC=%d
    ",getval("AD"));
     60     //printf("AC=%d
    ",getval("AH"));
     61     //printf("AC=%d
    ",getval("AS"));
     62     //printf("KS=%d
    ",getval("KS"));
     63 }
     64 
     65 void build( int n ){
     66     tree *p = &root;
     67     tree *tmp;
     68     for( int i=1;i<=n;i++ ){
     69         if( p->next[ a[i] ]==NULL ){
     70             tmp = ( tree* )malloc( sizeof( root ) );
     71             //tmp->lev = true;
     72             for( int j=0;j<maxn;j++ ){
     73                 tmp->next[j] = NULL;
     74             }
     75             p->next[ a[i] ] = tmp;
     76             p = p->next[ a[i] ];
     77             tot++;
     78         } 
     79         else{
     80             p = p->next[ a[i] ];
     81         }
     82     }
     83     return ;
     84 }
     85              
     86 int main(){
     87     int m;
     88     //freopen("in.txt","r",stdin);
     89     //freopen("out.txt","w",stdout);
     90     while( scanf("%d",&m)&&m>0 ){
     91         int n;
     92         init();
     93         char tmp[ 12 ];
     94         for( int i=1;i<=m;i++ ){
     95             scanf("%d",&n);
     96             //printf("i=%d
    ",i);
     97             for( int j=n;j>=1;j-- ){
     98                 scanf("%s",tmp);
     99                 a[ j ] = getval(tmp);
    100             }
    101             //for( int j=1;j<=n;j++ )
    102                 //printf("%d ",a[j]);
    103             //printf("
    ");
    104             build( n );
    105         }
    106         printf("%d
    ",tot);
    107         //delete(&root);
    108     }
    109     return 0;
    110 }
    View Code
    keep moving...
  • 相关阅读:
    RibbonToggleButton
    civil 3d 体积曲面提取等高线
    Civil 3D中各种ObjectID集合中的对象具体是什么类型?
    Civil 3D曲面高程分析
    C++不允许使用指向不完整类型的指针
    LNK2019 无法解析的外部符号 "int __cdecl acedGetReal(wchar_t const *,double *)"
    Civil 3D中获取路线上任意一点处切线方位角
    AutoCAD 实体添加超级链接
    论坛中看到的代码,留存备用 批量创建dwg文件
    ionic3 新增主题色
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3268538.html
Copyright © 2020-2023  润新知