hdu1671(Tire-Tree)
来源:互联网 发布:java三年工作经验工资 编辑:程序博客网 时间:2024/06/16 14:28
思路:建立一个字典树,然后对路径上的结定做一个标记,方便后面再次遍历寻找的时候判断前缀。
/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;#define MEM(a,b) memset(a,b,sizeof a)typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;inline int Readint(){char c = getchar();while(!isdigit(c)) c = getchar();int x = 0;while(isdigit(c)){x = x * 10 + c - '0';c = getchar();}return x;}struct Tire{int v;Tire* nxt[26];};Tire *rt;void insert(char *s){Tire *p = rt,*q;int len = strlen(s);for (int i = 0;i < len;i++){int pos = s[i] - '0';if (p->nxt[pos] == NULL){q = (Tire*)malloc(sizeof (Tire));for(int j = 0;j < 10;j++)q->nxt[j] = NULL;q->v = 1;p->nxt[pos] = q;p = q;}else{p->nxt[pos]->v++;p = p->nxt[pos];}}}int find(char*s){int len = strlen(s);Tire* p = rt;for (int i = 0;i < len;i++){int pos = s[i] - '0';if (p->nxt[pos] == NULL || p->nxt[pos]->v == 1)return 0;p = p->nxt[pos];}return 1;}void DelTire(Tire* p){if (p == NULL) return;for (int i = 0;i < 10;i++)if (p->nxt[i] != NULL) DelTire(p->nxt[i]);free (p);}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);int T;T = Readint();while(T--){int n = Readint();char str[10010][11];rt = (Tire*)malloc(sizeof (Tire));for (int i = 0;i < 10;i++)rt->nxt[i] = NULL;rt->v = 0;for (int i = 0;i < n;i++){scanf("%s",str[i]);insert(str[i]);}int flag = 0;for (int i = 0;i < n;i++){flag = find(str[i]);if (flag){printf("NO\n");break;}}if (!flag) printf("YES\n");DelTire(rt);}return 0;}
0 0
- hdu1671(Tire-Tree)
- Tire Tree
- tire tree
- HDU1671 POJ3630 Phone List Tire树
- hdu1671
- hdu1671
- hdu1671
- hdu1671
- hdu1671
- HDU1671
- hdu1671
- hdu1671
- Tire
- HDU 1251 统计难题(Tire tree)
- HDU 1671 Phone list (Tire tree)
- 水题不水之字典树(Tire tree)
- Tire-Tree(前缀树,字典树)
- POJ 2513 Colored Sticks【tire tree+并查集+欧拉路】
- NOIP快速幂复习
- C语言之进制、位运算符、数组
- POJ 3335 Rotating Scoreboard (半平面内核判断)
- Android 全局获取Context(随时随地的使用Context)
- Ubuntu下useradd使用笔记
- hdu1671(Tire-Tree)
- 动力效果 UIGravityBehavior- UICollisionBehavior- UIDynamicItemBehavior
- POJ 1503 Integer Inquiry 美丽的大整数相加 + 测试数据
- 判断一个数组是否是一棵树的后续遍历
- 事务1
- android控件checkBox的选中效果
- Java Comparator 排序
- 【解决方法】Setup script exited with error: command 'cc' failed with exit status 1
- HTTP协议详解(真的很经典)