時間限制 : 15000 ms 空間限制 : 65536 kb
問題描述
在生物學中,一些生物的結構是用包含其要素的大寫字母序列來表示的。生物學家對於把長的序列分解成較短的序列(即元素)很感興趣。
如果乙個集合 p 中的元素可以通過串聯(元素可以重複使用,相當於 pascal 中的 「+」 運算子)組成乙個序列 s ,那麼我們認為序列 s 可以分解為 p 中的元素。元素不一定要全部出現(如下例中bbc就沒有出現)。舉個例子,序列 ababacabaab 可以分解為下面集合中的元素:
序列 s 的前面 k 個字元稱作 s 中長度為 k 的字首。設計乙個程式,輸入乙個元素集合以及乙個大寫字母序列 s ,設s』是序列s的最長字首,使其可以分解為給出的集合p中的元素,求s』的長度k。
輸入格式
輸入資料的開頭包括 1..200 個元素(長度為 1..10 )組成的集合,用連續的以空格分開的字串表示。字母全部是大寫,資料可能不止一行。元素集合結束的標誌是乙個只包含乙個 「.」 的行。集合中的元素沒有重複。接著是大寫字母序列 s ,長度為 1..200,000 ,用一行或者多行的字串來表示,每行不超過 76 個字元。換行符並不是序列 s 的一部分。
輸出格式
只有一行,輸出乙個整數,表示 s 符合條件的字首的最大長度。
樣例輸入
a ab ba ca bbc
. ababacabaabc
樣例輸出
#include#include#include#includeusing namespace std;
string a[201];
string str;
bool f[200001];
int n,len;
bool ischar(char c)
bool check(int p)
} return false;
}int main()
int x1,x2;
str="";
len=0;
while(cin>>s)
memset(f,0,sizeof(f));
f[0]=true;
for(int i=1;i<=len;i++)
if(check(i))
f[i]=true;
else
f[i]=false;
for(int i=len;i>=0;i--)
if(f[i]){
cout<
IOI 96 Magic Square解題報告
ioi 96 magic square 魔版 題目由jerryxie翻譯。magic square msqaure.cpp c pas 問題描述 在魔方的成功之後,盧比克先生發明了它的二維版本,叫做魔版。它是乙個由八個方塊組成的 在本題中我們認為每乙個方塊都有不同的顏色,這些顏色將會用1 8共8個整...
最長公共字首
描述 給k個字串,求出他們的最長公共字首 lcp 樣例 在 abcd abef 和 acef 中,lcp 為 a 在 abcdefg abcefg abcefa 中,lcp 為 abc 新知識點 vectorstrs既可以是一維的,也可以是多維的。在這裡講解三維的初始化。vector str str...
最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。class solution object...