博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——1305,Immediate Decodability(Trie树)
阅读量:4050 次
发布时间:2019-05-25

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

num[i]:节点属性,表示在i节点是否为某个单词的结尾,即单词是否在这里结束,1是,0否。

突破口:
if(num[node]==1)
首先num[node]=1说明有单词是以node节点结束的,接下来搜索node下面是否有子节点,有的话说明有另外的单词以该单词为前缀,没有的话继续node++。

代码如下:

#include
#include
#include
#include
using namespace std;typedef long long ll;const int maxn=1e3+5;int Trie[maxn][2]={0};int num[maxn]={0};char s[10][15];int tot=1,flag;void insert(int n){ int len,node,i,j; len=strlen(s[n])-1;node=0; for(i=0;i<=len;i++) { if(Trie[node][s[n][i]-'0']==0) Trie[node][s[n][i]-'0']=tot++; node=Trie[node][s[n][i]-'0']; } num[node]=1;}/*void inquire(int node){ if(flag==0) return; if(num[node]==1) { if(Trie[node][0]!=0||Trie[node][1]!=0) flag=0; //return; } if(node>tot) return; inquire(node+1);}*/int main(){ int n,i,j,kase=1; n=0;flag=1; while(~scanf("%s",s[n])) { if(s[n][0]!='9') { insert(n); n++; } else { n=0; int node; for(node=0;node

转载地址:http://iddci.baihongyu.com/

你可能感兴趣的文章
MongoDB数据库插入、更新和删除操作详解
查看>>
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>
分布式存储系统设计(1)—— 系统架构
查看>>
MySQL数据库的高可用方案总结
查看>>
常用排序算法总结(一) 比较算法总结
查看>>
剖析 Linux hypervisor
查看>>