hdu 1247 Hat’s Words(dfs+trie)
来源:互联网 发布:七彩网络下载 编辑:程序博客网 时间:2024/06/05 19:56
Hat’s Words
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9037 Accepted Submission(s): 3231
Problem Description
A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.
You are to find all the hat’s words in a dictionary.
You are to find all the hat’s words in a dictionary.
Input
Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 50,000 words.
Only one case.
Only one case.
Output
Your output should contain all the hat’s words, one per line, in alphabetical order.
Sample Input
aahathathatwordhzieeword
Sample Output
ahathatword
Author
戴帽子的
题目分析:
用字典树先把字符串存下,然后利用深搜trie,利用指针跳转判断当前串能否被严格分成两个已有的串
用字典树先把字符串存下,然后利用深搜trie,利用指针跳转判断当前串能否被严格分成两个已有的串
#include <algorithm>#include <cstring>#include <cstdio>#include <iostream>using namespace std;char s[50007][100];struct Node{ int cnt; Node * b[27]; Node ( ) :cnt(0) { memset ( b , 0 , sizeof ( b ) ); }}*root;bool flag;void dfs ( int i , Node * p , int state = 0, int j = 0 ){ if ( flag ) return; if ( !s[i][j] ) { if ( state == 1 && p->cnt == 1 ) flag = true; return; } int x = s[i][j]-'a'; if ( p->cnt ) dfs ( i , root , state+1 , j ); if ( p->b[x] ) dfs ( i , p->b[x] , state , j+1 );}int main ( ){ int num = 0; // freopen ( "a.txt" , "r" , stdin ); root = new Node ( ); while ( ~scanf ( "%s" , s[num] ) ) { int i = 0; Node *p = root; while ( s[num][i] ) { int x = s[num][i]-'a'; if ( !(p->b[x]) ) p->b[x] = new Node(); p = p->b[x]; i++; } p->cnt = 1; num++; } for ( int i = 0 ; i < num ; i++ ) { flag = false; dfs ( i , root ); if ( flag ) printf ( "%s\n" , s[i] ); }}
0 0
- hdu 1247 Hat’s Words(dfs+trie)
- hdu 1247 Hat’s Words Trie树
- HDU 1247 Hat’s Words Trie题解
- HDU 1247 Hat's words(Trie)
- HDU -- 1247 Hat’s Words (Trie 树)
- hdu 1247 Hat’s Words trie
- HDU 1247 Hat’s Words // Trie, 枚举
- hdu 1247 Hat’s Words(Trie)
- [hdu 1247]Hat’s Words [Trie 图]
- Hdu 1247 Hat's Words(Trie树)
- HDU 1247 Hat’s Words (Trie)
- HDU 1247 Hat’s Words && Trie(字典树)
- HDU 1247 Hat’s Words(字典树Trie)
- HDU 1247 Hat's words(字典树Trie)
- HDU ACM 1247-Hat’s Words-字典树(Trie)
- HDU 1247 Hat’s Words (Trie·指针实现)
- hdu 1247 Hat’s Words(Trie树入门)
- hdu 1247 Hat’s Words Trie树(+测试数据)
- sleep,wait和yield的区别
- js的沙箱模式
- VC中定时器设置
- 腾格里沙漠部分污染地被填埋 记者采访被限自由
- Container With Most Water--LeetCode
- hdu 1247 Hat’s Words(dfs+trie)
- iOS基础控件之UISegmentedControl
- 字符串模式匹配之Brute force、KMP、Horspool算法
- 【Financial Markets】5. Trading strategy (1)
- Android gc垃圾回收研究学习
- 【LeetCode从零单排】No133. clon graph (BFS广度优先搜索)
- P51第18题
- 使用strcat连接字符串
- spring 配置依赖