UVA 10391 STL容器的使用
这道题目,我是用了2个set(s1,s2)容器,s1用来盛放所有的字符串,然后遍历s1,把每个字符串拆成2部分,再判断s1里是否均含有这2部分,如果有就加入到s2容器里,因为它要求按照字典序输出,set又具有排序功能。
代码如下:
#include <iostream> #include<stdio.h> #include<stdlib.h> #include<string> #include<set> #include<string.h> #define maxn 120000+10 using namespace std; string s[maxn]; int main() { int num=0; set<string> s1; set<string> s2; while(cin>>s[num]){ s1.insert(s[num]); num++; } set<string>::iterator it; string x,y; for(it=s1.begin();it!=s1.end();it++){ string ss=*it; int len=ss.length(); for(int i=1;i<len;i++){ x=ss.substr(0,i); y=ss.substr(i,len-i); if(s1.count(x)&&s1.count(y)){ s2.insert(ss); } } } for(it=s2.begin();it!=s2.end();it++){ cout<<*it<<endl; } return 0; }