日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

usaco ★Longest Prefix 最长前缀

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 usaco ★Longest Prefix 最长前缀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
★Longest Prefix 最長前綴
在生物學中,一些生物的結構是用包含其要素的大寫字母序列來表示的.生物學家對于把長的序列
28
分解成較短的(稱之為元素的)序列很感興趣.
如果一個集合 P 中的元素可以通過串聯(允許重復;串聯,相當于 Pascal 中的 “+” 運算符)
組成一個序列 S ,那么我們認為序列 S 可以分解為 P 中的元素.并不是所有的元素都必須出現.
舉個例子,序列 ABABACABAAB 可以分解為下面集合中的元素:
{A, AB, BA, CA, BBC}
序列 S 的前面 K 個字符稱作 S 中長度為 K 的前綴.設計一個程序,輸入一個元素集合以及一個
大寫字母序列,計算這個序列最長的前綴的長度.
PROGRAM NAME: prefix
INPUT FORMAT
輸入數據的開頭包括 1..200 個元素(長度為 1..10 )組成的集合,用連續的以空格分開的字符串
表示.字母全部是大寫,數據可能不止一行.元素集合結束的標志是一個只包含一個 “.” 的行.集
合中的元素沒有重復.接著是大寫字母序列 S ,長度為 1..200,000 ,用一行或者多行的字符串來表
示,每行不超過 76 個字符.換行符并不是序列 S 的一部分.
SAMPLE INPUT (file prefix.in)
A AB BA CA BBC
ABABACABAABC
OUTPUT FORMAT
只有一行,輸出一個整數,表示 S 能夠分解成 P 中元素的最長前綴的長度.
SAMPLE OUTPUT (file prefix.out)

11


我最怕就是對這種字符串進行處理特別是換行之類的所以這題理所當然放到最后寫,。。。。。。然后不會寫看了題解。。。。。。。

按順序找到該點能延伸到最遠的那點并把那點標記為true,再每找到true的點就往后延伸,直到找不到了因為我們是按順序找true點的所以最后一個也就是最遠的一個。

/*
ID:jinbo wu
LANG:C++
TASK:prefix
*/
#include<bits/stdc++.h>
using namespace std;
char a[205][15];
string str;
char s[100];
bool f[200010];
int main()
{freopen("prefix.in","r",stdin);freopen("prefix.out","w",stdout);int num=0,ans;scanf("%s",a[num]);while(a[num][0]!='.'){num++;scanf("%s",a[num]);	}str="";while(cin>>s)// cin>>s; str+=s;f[0]=true;for(int i=0;i<=str.length();i++){if(f[i]){   ans=i;for(int j=0;j<num;j++){int flag=1;for(int k=0;k<strlen(a[j]);k++)if(str[i+k]!=a[j][k]){flag=0;break;}if(flag)f[i+strlen(a[j])]=true;}}}cout<<ans<<endl;
}


總結

以上是生活随笔為你收集整理的usaco ★Longest Prefix 最长前缀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。