POJ--1056 IMMEDIATE DECODABILITY (字典樹)
阿新 • • 發佈:2018-10-13
problem eof 輸入 ability 字典樹 using lan max 都是
題目鏈接
題目大意 看輸入的每個字符串中是否有一個字符串是另一個字符串的前綴
#include<iostream> #include<cstring> #include<algorithm> #include<string.h> #include<stdio.h> using namespace std; #define maxn 10001 string b[maxn]; int tot=0; struct ac{ int sum,fa,nex[30]; void init(){ sum=0;fa=0; memset(nex,0,sizeof(nex)); } }tre[maxn*4]; void add(char a[],bool &f){ int i=0,j=0,k=0; while(a[i]){ int z=a[i]-‘0‘; if(tre[k].nex[z]){ j=tre[k].nex[z]; tre[j].sum++; if(tre[j].fa) f=1; }else{ tre[k].nex[z]=++tot; j=tot; tre[j].init(); tre[j].sum++; } k=j; i++; } tre[k].fa++; } /*bool query(string a){ int i=0,j=0,k=0; while(i<a.size()-1){ int z=a[i]-‘0‘; if(tre[k].nex[z]){ j=tre[k].nex[z]; if(tre[j].fa) return 1; }else return 0; k=j; i++; } }*/ int main(){ chara[1001]; int len=0,tt=1; bool fa=0; while(scanf("%s",a)!=EOF){ if(a[0]!=‘9‘){ add(a,fa); }else{ if(fa) printf("Set %d is not immediately decodable\n",tt++); if(!fa){ printf("Set %d is immediately decodable\n",tt++); } len=0;tot=0,fa=0; memset(tre,0,sizeof(tre)); } } }
題目鏈接 : POJ--3630 Phone List
題意和上一個題差不多 都是找裏面是否含有前綴和相同的
#include<iostream> #include<cstring> #include<algorithm> #include<string.h> #include<stdio.h> using namespace std; #define maxn 100010 int tot=0; struct ac{ int sum,fa,nex[11]; void init(){ sum=0;fa=0; memset(nex,0,sizeof(nex)); } }tre[maxn]; void add(char a[],bool &f){ int i=0,j=0,k=0; while(a[i]){ int z=a[i]-‘0‘; if(tre[k].nex[z]){ j=tre[k].nex[z]; tre[j].sum++; if(i==strlen(a)-1) f=1; if(tre[j].fa) f=1; }else{ tre[k].nex[z]=++tot; j=tot; tre[j].init(); tre[j].sum++; } k=j; i++; } tre[k].fa++; } /*bool query(string a){ int i=0,j=0,k=0; while(i<a.size()-1){ int z=a[i]-‘0‘; if(tre[k].nex[z]){ j=tre[k].nex[z]; if(tre[j].fa) return 1; }else return 0; k=j; i++; } }*/ char a[1001]; int main(){ int t; cin>>t; while(t--){ int n; scanf("%d",&n); memset(tre,0,sizeof(tre)); tot=0; bool fa=0; for(int j=0;j<n;j++){ scanf("%s",a); if(!fa) add(a,fa); } if(fa){ printf("NO\n"); }else{ printf("YES\n"); } } }
POJ--1056 IMMEDIATE DECODABILITY (字典樹)