STL --- UVA 123 Searching Quickly
2015-05-03 21:55
375 查看
UVA - 123 Searching Quickly
Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19296
[b]Mean:[/b]有一个字符串集合Ignore,还有一个文本集合TXT,在TXT中除了Ignore中的单词外其他的都是关键字,现在要你根据这些关键字来给TXT文本排序(根据关键字的字典)。
注意:一行TXT文本中含多少个关键字就需要排多少次序,如果关键字的字典序相同则按照先后顺序来排。
[b]analyse:[/b]
这题STL用的比较多,使用STL可以很好的解决去重、排序等一序列问题,而手动实现的话就稍微繁琐一点,思路并不难。
[b]Time complexity: O(n)[/b]
[b]Source code: [/b]
1. STL版:
/* * this code is made by crazyacking * Verdict: Accepted * Submission Date: 2015-05-03-21.52 * Time: 0MS * Memory: 1347KB */ #include <queue> #include <cstdio> #include <string> #include <stack> #include <cmath> #include <set> #include <map> #include <cstdlib> #include <climits> #include <vector> #include <iostream> #include <algorithm> #include <cstring> #define MAXN 1000010 #define LL long long using namespace std; struct node { int n; char word[20][1500]; void fun(char *str) { int len=strlen(str); for(int i=0;i<len;i++) str[i]=tolower(str[i]); n=0; char *strPtr=strtok(str," "); while(strPtr!=NULL) { strcpy(word[n++],strPtr); strPtr=strtok(NULL," "); } } }title[300]; void output(int t,int pos) { int len=strlen(title[t].word[pos]); for(int i=0;i<len;i++) { title[t].word[pos][i]=toupper(title[t].word[pos][i]); } for(int i=0;i<title[t].n;i++) { if(i==0) { printf("%s",title[t].word[i]); } else printf(" %s",title[t].word[i]); } for(int i=0;i<len;i++) { title[t].word[pos][i]=tolower(title[t].word[pos][i]); } puts(""); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n=0; set<string> ig,key; set<string>::iterator it; char temp[20],str[10005]; while(scanf("%s",temp)!=EOF) { if(strcmp(temp,"::")==0) break; ig.insert(temp); } while(gets(str)) { title .fun(str); for(int i=0;i<title .n;i++) { bool flag=false; for(it=ig.begin();it!=ig.end();it++) { if(strcmp(title .word[i],(*it).c_str())==0) { flag=true;break; } } if(!flag) key.insert(title .word[i]); } n++; } for(it=key.begin();it!=key.end();it++) { for(int i=0;i<n;i++) { for(int j=0;j<title[i].n;j++) { if(strcmp((*it).c_str(),title[i].word[j])==0) { output(i,j); } } } } return 0; } /* */
View Code
相关文章推荐
- STL --- UVA 123 Searching Quickly
- uva 123 stl大法好
- UVa 12219 Common Subexpression Elimination (stl,模拟,实现)
- UVa 136 Ugly Numbers 【STL】【priority_queue】
- Uva 123 Searching Quickly
- 【STL】uva 514 Rails
- UVALive 3634 熟悉一下STL
- uva 540 Team Queue(queue与STL其他容器的综合运用)
- Brute Force & STL --- UVA 146 ID Codes
- (使用STL中的数据结构进行编程7.3.15)UVA 630 Anagrams (II)(求一个单词在字典中出现的次数)
- UVA 11995 I Can Guess the Data Structure!<STL数据结构使用>
- UVA - 123 Searching Quickly
- UVA - 10815【字符串处理STL】
- UVA 123 Searching Quickly
- uva 123 - Searching Quickly
- uva 11991 - Easy Problem from Rujia Liu?(STL)
- uva-10815-Andy's First Dictionary-stl-set
- UVA 11020 multiset、lower_bound、 upper_bound STL里面的排序二叉树
- UVA 11995 - I Can Guess the Data Structure! (数据结构) STL的应用
- UVA - 1103 Ancient Messages dfs+stl