HDU 1671 Phone List
来源:互联网 发布:js怎么截取地址字符串 编辑:程序博客网 时间:2024/06/04 01:34
题目地址:点击打开链接
思路:可以用字典树做,但是比较麻烦,可以吧string类型放进vector,然后排序,看每个string与前一个是否有相同的部分,字典树做的满是泪,坑太多了
AC代码:
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){int n,m,i;vector<string> v;string s;cin>>n;while(n--){v.clear();cin>>m;for(i=0; i<m; i++){cin>>s;v.push_back(s);}sort(v.begin(),v.end());for(i=0; i<m-1; i++){if(v[i+1].find(v[i]) == 0){break;}}if(i == m-1)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}
AC代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>using namespace std;const int maxn = INT_MAX;struct Trie{ int v; struct Trie *next[10];};Trie *root;void CreateTrie(char *str){ int i,j,id; int len = strlen(str); Trie *p = root,*q; for(i=0; i<len; i++) { id = str[i] - '0'; if(p->next[id] == NULL) { q = (Trie*)malloc(sizeof(Trie)); p->v=1; for(j=0; j<10; j++) { q->next[j] = NULL; } p->next[id] = q; p = p->next[id]; } else { p = p->next[id]; } } p->v = -1;}int findTrie(char *str){ int i,id; int len = strlen(str); Trie *p = root; for(i=0; i<len; i++) { id = str[i] - '0'; p = p->next[id]; if(p == NULL) return 0; if(p->v == -1)//有前缀 return -1; } return -1;//这个字符串是已经存在的字符串的前缀}int deal(Trie *T){ int i; if(T == NULL) return 0; for(i=0; i<10; i++) { if(T->next[i] != NULL) deal(T->next[i]); } free(T); return 0;}int main(){ int t,n,i,flag; scanf("%d",&t); char str[12]; while(t--) { flag = 0; root = (Trie*)malloc(sizeof(Trie)); for(i=0; i<10; i++) { root->next[i] = NULL; } scanf("%d",&n); for(i=0; i<n; i++) { scanf("%s",str); if(findTrie(str) == -1) { flag = 1; } if(flag) continue; CreateTrie(str); } if(flag) printf("NO\n"); else printf("YES\n"); deal(root); } return 0;}
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){int n,m,i,j;vector<string> v;string s;cin>>n;while(n--){v.clear();cin>>m;for(i=0; i<m; i++){cin>>s;v.push_back(s);}for(i=0; i<m-1; i++){for(j=0; j<m; j++){if(i != j && v[i].find(v[j]) == 0){break;}}}if(i == m-1)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}
0 0
- Phone List 1671hdu
- Hdu-1671 Phone List
- hdu 1671 Phone List
- HDU-1671-Phone List
- hdu 1671 Phone list
- hdu 1671 Phone List
- hdu 1671 Phone List
- HDU 1671 Phone List
- HDU 1671 Phone List
- HDU 1671 Phone List
- hdu 1671 Phone List
- hdu 1671 Phone List
- HDU-1671-Phone List
- Phone List hdu 1671
- hdu 1671 Phone List
- hdu 1671 Phone List
- HDU 1671 Phone List(
- hdu 1671 Phone List
- “Thinking in AngularJS” if I have a jQuery background?
- spring基础
- hdu 5303 Delicious Apples
- android之对话框
- 单队列的链式表示和实现
- HDU 1671 Phone List
- KMP算法(待优化)--2015年7月25日14:04:25V1.0版
- poj 2253 Frogger(最小生成树)
- HDU1565 方格取数(1) 网络流
- 排序算法
- Dubbo--简介
- [Python]import 出错
- [bfs] poj3278 Catch that Cow
- iOS- AVSpeechSynthesizer——iOS7语音合成器