标签:
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