Sample Input
a
alien
born
less
lien
never
nevertheless
new
newborn
the
zebra
Sample Output
alien
newborn
輸入是字典序的,題意就是講一個(gè)單詞分成兩半,且兩半都出現(xiàn)在輸入中,則將此單詞輸出。下面的代碼是對每一個(gè)單詞嘗試所有的分拆方法,一個(gè)個(gè)去尋找是否拆成的兩
個(gè)是否都存在,如果兩個(gè)字串都存在,則輸出,同時(shí)跳出循環(huán)(否則可能重復(fù)輸出)。
其實(shí)有更高效的方法,就是到每個(gè)單詞前面尋找是否有他的字串(比如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;
}
結(jié)果 if
----

點(diǎn)此代碼
#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 閱讀(290)
評論(0) 編輯 收藏 引用 所屬分類:
格式.輸入輸出.數(shù)據(jù)類型