字串 P2031 腦力達人之分割字串

2021-08-08 23:15:15 字數 1218 閱讀 1275

題目背景

好吧,該來的廢話還是要來的。

畫外音:

終於,在兩輪的重重選拔之後,我們的海選終於結束了。現在進入我們的迴圈賽環節。循壞賽一共有四場,最後選出得分最高的16人進入對決,得分相同則和按用時排名,若仍有不能確定16人的情況,則去尾處理。

歡迎您收看有洛谷衛視重磅推出的綜合性文藝知識類節目「開心玩遊戲,輕鬆贏比賽」,我是luwm。學程式設計,就選洛谷, 感謝洛谷online judge對本節目的大力支援。下面,我們有請10位選手上台,由大螢幕給出題目。

題目描述

現在有乙個字串,你可以對這個字串進行拆分,如abcvsdaas可以拆分為abc|vs|d|aasa,現在再給你乙個字典,要求分割成的每乙個子串必須要有包含其中的任意乙個單詞。那麼最多可以分為幾個子串呢?

輸入輸出格式

輸入格式:

第一行,一行字串

第二行乙個數n,表示字典中字串的數量

接下來n行,每行乙個字串,表示字典中的乙個字串。

輸出格式:

乙個數,最多的分割數。

輸入輸出樣例

輸入樣例#1:

asdsd

3 as

sd ds

輸出樣例#1:

2 說明

特殊情況:

如果原字串不能被分割,請輸出0

資料範圍:

對於20%的資料,1<=len(s)<=50,1<=n<=50

對於100%的資料,1<=len(ai)<=len(s)<=300,1<=n<=500

題解:

f[j]表示從1到j最大分割數

#include

#include

#include

#include

using

namespace

std;

int n,m,f[1000]=;

char a[10000],b[505][505];//f[j]表示從1到j最大分割數

int l,num,leng[10000],ans=0;

bool x;

int main()

for(int i=0;i//迴圈a,找到相同子串

for(int j=1;j<=n;j++)//迴圈種類

}if(x)//如果成功,更新後面的點}}

}printf("%d ",f[l-1]);//注意n-1

}

洛谷 P2031 腦力達人之分割字串

題目描述 現在有乙個字串,你可以對這個字串進行拆分,如abcvsdaas可以拆分為abc vs d aasa,現在再給你乙個字典,要求分割成的每乙個子串必須要有包含其中的任意乙個單詞。那麼最多可以分為幾個子串呢?題目分析 隨機跳題,跳到一道水題,動態規劃 trie樹。include include ...

洛谷 P2031 腦力達人之分割字串

好吧,該來的廢話還是要來的。畫外音 終於,在兩輪的重重選拔之後,我們的海選終於結束了。現在進入我們的迴圈賽環節。循壞賽一共有四場,最後選出得分最高的16人進入對決,得分相同則和按用時排名,若仍有不能確定16人的情況,則去尾處理。歡迎您收看有洛谷衛視重磅推出的綜合性文藝知識類節目 開心玩遊戲,輕鬆贏比...

洛谷 P2031 腦力達人之分割字串

f i 表示到第i位可獲得的最大分割次數,對於每個f i 都可由其符合條件的字首轉移過來,條件就是當前串除了字首的剩餘字元裡有所給單詞,然後一看,這不是在剩餘字元裡找有沒有所給單詞嗎?所以果斷kmp,其實本題好像不用kmp,暴力模擬就可以,但是為了練習kmp裝逼,所以就寫一下.1 include2 ...