码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 10391 Compound Words(哈希,逆向思维)

时间:2016-04-29 21:52:29      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 /**
 5 学习:
 6     逆向思维:将复合词拆分成两个词,看是否在set中出现
 7     string类 的 substr
 8 
 9 */
10 
11 int main(){
12     set<string> myset;
13     set<string>::iterator it;
14     string str;
15     int cnt = 0;
16     while(cin >> str){
17         myset.insert(str);
18         cnt ++;
19     }
20     for(it = myset.begin() ; it != myset.end() ; it++){
21         string st = *it;
22         for(int i = 0 ; i < st.length() ; i ++){
23             string a = st.substr(0,i+1);
24             string b = st.substr(i+1);
25             if(myset.count(a) && myset.count(b)){
26                 cout << st << endl;
27                 break;
28             }
29         }
30     }
31     return 0;
32 }

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 /**
 5 学习:
 6     逆向思维:将复合词拆分成两个词,看是否在set中出现
 7     string类 的 substr
 8 
 9 */
10 
11 map<string,bool> myhash;
12 string myset[120005];
13 int main(){
14 
15     string str;
16     int cnt = 0;
17     while(cin >> str){
18         myset[cnt++] = str;
19         myhash[str] = true;
20     }
21     for(int i = 0 ; i < cnt ; i ++){
22         int len = myset[i].length();
23         for(int j = 0 ; j < len - 1; j ++){
24             string a = myset[i].substr(0,j+1);
25             string b = myset[i].substr(j+1);
26             if(myhash[a] && myhash[b]) cout << myset[i] << endl;
27             if(myhash[a] && myhash[b]) break;
28         }
29     }
30     return 0;
31 }

 

UVA 10391 Compound Words(哈希,逆向思维)

标签:

原文地址:http://www.cnblogs.com/zstu-jack/p/5447462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!