Phone List--POJ 3630
2010-07-22 20:40
369 查看
1、题目类型:字符串、字典树、排序查找。
2、解题思路:找寻字符串的字串。
3、注意事项:trie树Insert()时后继数组的更新,注意考虑对比当前数据和字典中数据长、短、相等这三种情况,注意控制静态开辟结构体数组的长度。
4、实现方法:(trie树:Memory: 26108K、Time: 641MS)
5、实现方法:(排序查找:Memory: 836K、Time: 391MS)
2、解题思路:找寻字符串的字串。
3、注意事项:trie树Insert()时后继数组的更新,注意考虑对比当前数据和字典中数据长、短、相等这三种情况,注意控制静态开辟结构体数组的长度。
4、实现方法:(trie树:Memory: 26108K、Time: 641MS)
#include<iostream> #include<string> using namespace std; struct Trie { bool end; Trie *nxt[10]; }; Trie root,Arr[600000]; int num; bool flag; void Insert(char str[]) { Trie *Current=&root; int i; for(i=0;i<strlen(str);i++) { if(Current->nxt[str[i]-'0']==NULL) { Current->nxt[str[i]-'0']=&Arr[num++]; //当前比字典中数长 if(Current->end) flag=1; } Current=Current->nxt[str[i]-'0']; } //当前和字典中数相等 if(i==strlen(str)&&Current->end) flag=1; Current->end=true; //当前比字典中数短 for(int j=0;j<10;j++) { if(Current->nxt[j]!=NULL) { flag=1; break; } } } int main() { int i,j,k,n,m; char str[10010]; cin>>n; for(i=0;i<n;i++) { flag=0; num=0; root.end=false; memset(Arr,0,sizeof(Arr)); for(k=0;k<10;k++) root.nxt[k]=NULL; cin>>m; for(j=0;j<m;j++) { scanf("%s",str); if(!flag) Insert(str); } if(!flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
5、实现方法:(排序查找:Memory: 836K、Time: 391MS)
#pragma warning (disable:4786) #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; vector<string>v; bool Match(string a,string b) { int i=0; while(a[i]!='\0' && b[i]!='\0') { if(a[i]==b[i]) i++; else return 0; } return 1; } int main() { int t,n,i; bool flag; cin>>t; string tmp; while(t--) { v.clear(); cin>>n; while(n--) { cin>>tmp; v.push_back(tmp); } sort(v.begin(),v.end()); i=0; flag=0; while(i<v.size()-1 && !flag) { flag=Match(v[i],v[i+1]); i++; } if(flag) cout<<"NO"<<endl; else cout<<"YES"<<endl; } return 0; }
相关文章推荐
- poj 3630 Phone List( 简单字典树 )
- POJ3630 Phone List 题解&代码
- POJ 3630 Phone List(解题报告)
- poj 3630 || zoj 2876 ||hdu 1671 Phone List (Trie树的应用)
- Trie树学习小记 Poj 3630 & Hdu1671 Phone List
- POJ 3630 Phone List
- poj 3630 Phone List (字典树 +静态字典树)
- poj 3630 Phone List
- POJ 3630 HDU 1671--Phone List【string】
- POJ 3630 Phone List/POJ 1056 【字典树】
- poj - 3630 - Phone List(数组Trip)
- POJ 3630 Phone List
- poj 3630 Phone List trie树—字典树 静态数组版!!!
- Phone List POJ 3630 Trie Tree 字典树
- POJ 3630 Phone List
- poj--3630--Phone List(字典树+前缀判断)
- POJ——3630 Phone List
- HDU 1671 Phone List && POJ 3630 Phone List
- poj 3630 Phone List (字典树)
- POJ 3630-Phone List【比较许多字符中有没有一个是另一个的前缀,简单方法】