EOJ 1018 單詞的劃分 DP STL

2021-09-25 21:04:37 字數 885 閱讀 3688

有乙個很長的由小寫字母組成字串。為了便於對這個字串進行分析,需要將它劃分成若干個部分,每個部分稱為乙個單詞。

出於減少分析量的目的,我們希望劃分出的單詞數越少越好。你就是來完成這一劃分工作的。

第一行為一整數 t,表示有 t 組測試資料。

每組測試資料第一行為一字串。(長度小於 256)

第二行為一整數 n。(1<=n<=100)

以下 n 行,每行乙個單詞,每個單詞長度小於 128。

每組測試資料佔一行 , 這一行只有乙個整數,表示字串可以被劃分成的最少的單詞數。我們保證單詞是可劃分的。

input

1

realityour

5real

reality

ityour

our

output

2
思路:遍歷字串,尋找以當前字母結尾時的子串所能拆分的最少單詞數,轉移方程:dp[i] = min(dp[i], dp[i-word.length()]+1) ,注意處理各種邊界條件。實現的過程中用map建立了乙個雜湊表,將每個單詞的最後乙個字母作為索引,將所有單詞整理成wordlist方便查詢。**實現如下:

#include #include #include #include using namespace std;

int main()

); }

else

/*建雜湊表*/

}for(int i=0; i0 ? dp[i-1] : 0;//則能拆分的單詞數不變

}else}}

}}

}cout<}

return 0;

}

單詞的劃分

單詞的劃分 time limit 1s memory limit 1000k total submit 2558 accepted 1134 有乙個很長的由小寫字母組成字串。為了便於對這個字串進行分析,需要將它劃分成若干個部分,每個部分稱為乙個單詞。出於減少分析量的目的,我們希望劃分出的單詞數越少越...

單詞的劃分

有乙個很長的由小寫字母組成的字串。為了便於對這個字串進行分析,需要將它劃分成若干部分,每部分稱為乙個單詞。出於減少分析量的目的,希望劃分出的單詞數越少越好。第1行1個字串,長度不超過100。第2行1個整數n,表示單詞的個數,n 100。第3 n 2行,每行列出1個單詞。一行乙個正整數,表示字串可以被...

DP 單詞的劃分

題目描述 有乙個很長的由小寫字母組成字串。為了便於對這個字串進行分析,需要將它劃分成若干個部分,每個部分稱為乙個單詞。出於減少分析量的目的,我們希望劃分出的單詞數越少越好。你就是來完成這一劃分工作的。輸入 第一行,乙個字串。字串的長度不超過300 第二行乙個整數n,表示單詞的個數。n 100 第3 ...