Sample Input
a
alien
born
less
lien
never
nevertheless
new
newborn
the
zebra
Sample Output
alien
newborn
输入是字典序的,题意就是讲一个单词分成两半,且两半都出现在输入中,则将此单词输出。下面的代码是对每一个单词尝试所有的分拆方法,一个个去寻找是否拆成的两
个是否都存在,如果两个字串都存在,则输出,同时跳出循环(否则可能重复输出)。
其实有更高效的方法,就是到每个单词前面寻找是否有他的字串(比如newborn 前面有new,neverthelsess 前面有never),有的话,再找后半部分是否在输入中。
----
获取子串的方法。 string B = A.substr(start,length);
start为子串在A中的开始位置.
length为子串的长度
例子
void main()
{
string st="ifn",b;
b=st.substr(0,2);
cout<<b;
}
结果 if
----
点此代码
#include<iostream>
#include<cstdlib>
using namespace std;
string a[120000];
bool bsearch(string s,int n)
{
int begin=0;
int end=n-1;
int mid;
while(begin<=end)
{
mid=(begin+end)/2;;
if(a[mid]==s)
return true;
if(a[mid]>s)
{
end=mid-1;
}
else
{
begin=mid+1;
}
}
return false;
}
int main()
{
string b;
int i=0,j,k;
while(cin>>b)
{
a[i]=b;
i++;
}
for(j=1;j<i;j++)
{
for(k=1;k<a[j].size();k++)
{
string tem(a[j],0,k);
string temp(a[j],k,a[j].size());
if(bsearch(temp,i)&&bsearch(tem,i))
{
cout<<a[j]<<endl;
break;
}
}
}
//system("PAUSE");
return 0;
}
posted on 2009-07-19 10:09
luis 阅读(281)
评论(0) 编辑 收藏 引用 所属分类:
格式.输入输出.数据类型