博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3283
阅读量:4321 次
发布时间:2019-06-06

本文共 2369 字,大约阅读时间需要 7 分钟。

/*数据结构之Trie树,字典树*/// include file#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;// typedeftypedef long long LL;typedef unsigned long long ULL;// #define read freopen("in.txt","r",stdin)#define write freopen("out.txt","w",stdout)#define FORi(a,b,c) for(int i=(a);i<(b);i+=c)#define FORj(a,b,c) for(int j=(a);j<(b);j+=c)#define FORk(a,b,c) for(int k=(a);k<(b);k+=c)#define FORp(a,b,c) for(int p=(a);p<(b);p+=c)#define FORii(a,b,c) for(int ii=(a);ii<(b);ii+=c)#define FORjj(a,b,c) for(int jj=(a);jj<(b);jj+=c)#define FORkk(a,b,c) for(int kk=(a);kk<(b);kk+=c)#define FF(i,a) for(int i=0;i<(a);i++)#define FFD(i,a) for(int i=(a)-1;i>=0;i--)#define Z(a) (a<<1)#define Y(a) (a>>1)const double eps = 1e-6;const double INFf = 1e10;const int INFi = 1000000000;const double Pi = acos(-1.0);template
inline T sqr(T a){return a*a;}template
inline T TMAX(T x,T y){ if(x>y) return x; return y;}template
inline T TMIN(T x,T y){ if(x
inline void SWAP(T &x,T &y){ T t = x; x = y; y = t;}template
inline T MMAX(T x,T y,T z){ return TMAX(TMAX(x,y),z);}// code beginstruct trie_node{ trie_node *next[52];};trie_node mem[100100];int dx;char in[100100][4];int T,N;trie_node *root;int ans;trie_node* CreateNode(){ trie_node* p = &mem[dx++]; memset(p,0,sizeof(p)); FORi(0,52,1) p->next[i] = NULL; return p;}int getId(char *tar){ // C D H S // A 2 ... 10 J Q K int l,r,n = (tar[0]=='1'&&tar[1]=='0')?3:2; if(n==3) l = 10; else if(tar[0]=='A') l = 1; else if(tar[0]=='J') l = 11; else if(tar[0]=='Q') l = 12; else if(tar[0]=='K') l = 13; else l = tar[0]-'0'; if(tar[n-1]=='C') r = 1; else if(tar[n-1]=='D') r = 2; else if(tar[n-1]=='H') r = 3; else r = 4; return (l-1)*4+r-1;}void InsertNode(int n){ trie_node *p = root; int id; for(int i=n-1;i>=0;i--) { id = getId(in[i]); if(p->next[id]==NULL) { p->next[id] = CreateNode(); ans++; } p = p->next[id]; }}int main(){ read; write; while(scanf("%d",&T)!=-1) { if(T==0) break; dx = 0; root = CreateNode(); ans = 0; while(T--) { scanf("%d",&N); FORi(0,N,1) { scanf("%s",in[i]); } InsertNode(N); } printf("%d\n",ans); } return 0;}

转载于:https://www.cnblogs.com/ac2012/archive/2011/04/06/2007304.html

你可能感兴趣的文章
shell解析xml文件
查看>>
十二. k8s--网络策略flannel与canal学习笔记
查看>>
十三. k8s--调度器
查看>>
十四. k8s资源需求和限制, 以及pod驱逐策略
查看>>
三. k8s基本操作以及pod存活以及可用性验证钩子
查看>>
五. k8s--service学习笔记
查看>>
二. k8s安装过程
查看>>
jenkins pipeline 使用遇到的问题
查看>>
四. k8s--pod控制器
查看>>
一. python数据结构与算法
查看>>
django模型内部类meta解释
查看>>
v-for(:key)绑定index、id、key的区别
查看>>
el-tree文本内容过多显示不完全问题(解决)
查看>>
el-table翻页序号不从1开始(已解决)
查看>>
vue-cil 打包爬坑(解决)
查看>>
定位问题 vue+element-ui+easyui(兼容性)
查看>>
四叶草(css)
查看>>
nginx——前端服务环境
查看>>
vue+element-ui 字体自适应不同屏幕
查看>>
Vue 循环为选中的li列表添加效果
查看>>