Work Break II 解題心得

2021-08-11 20:45:23 字數 1110 閱讀 3307

輸入乙個待分解的字串s,乙個包含多個單詞的字典dict

例如:

s = "catsanddog";

dict = ;

按照字典dict的單詞將s分解為多段的一句話

例如如下分解:

"cats and dog"

;

輸出為所有分解可能的陣列,對於上述輸入有如下輸出:

;
!坑:需要解出所有可能的句子分解形式

1. 只求得一種句子分解形式的解:

n為字串s的長度

isbreak(i) : 表示子字元s(i:n)是否可以分解,如果可以分解則值為裡i最近的下乙個單詞起始位置,如果不能分解則值為-1

所以使用狀態轉移方程:

isbreak(i) = k, (isbreak(k) != -1)

isbreak(i) = -1, (isbreak(k) == -1)

最後輸出時從0位置開始向後找下乙個單詞的分割位置,直到s的末尾,則輸出乙個work-break解

分析獲取多個解的情況,修改isbreak(k)的資料結構,使其儲存布不止乙個值,而是多個值

n為字串s的長度

isbreak(i) : 結構為乙個vector,指示子字元s(i:n)是否可以分解,如果可以分解則儲存多個下乙個單詞的起始位置,如果不可以分解則vector的大小為0

所以使用狀態轉移方程:

isbreak(i).push_back(k), (isbreak(k) != -1, k>i)

isbreak(i).size()==0, (isbreak(k) == -1, forall k>i)

最後輸出時從0位置開始向後找下乙個單詞的分割位置,這是乙個深度優先遍歷的過程,每個位置的多個值相當於樹的多個分支;直到s的末尾,即為樹的葉子節點,則儲存乙個work-break解

貪心解題心得

貪心解題心得 上星期做了幾道貪心的題目,對貪心演算法有了一定的了解,下面介紹一下自己的理解以及做題中遇到的問題以及一些需要注意的地方。貪心演算法主要用於求最優解的問題,由區域性最優解推到全域性最優解,是解決問題的首選演算法,但只能解決一小部分問題,應用範圍受限。揹包問題 揹包問題分為兩類,一類是0 ...

HDU 4548 美素數 解題心得

原題 description 小明對數的研究比較熱愛,一談到數,腦子裡就湧現出好多數的問題,今天,小明想考考你對素數的認識。問題是這樣的 乙個十進位制數,如果是素數,而且它的各位數字和也是素數,則稱之為 美素數 如29,本身是素數,而且2 9 11也是素數,所以它是美素數。給定乙個區間,你能計算出這...

HDU 2524 矩形A B 解題心得

原題 description 給你乙個高為n 寬為m列的網格,計算出這個網格中有多少個矩形,下圖為高為2,寬為4的網格.input 第一行輸入乙個t,表示有t組資料,然後每行輸入n,m,分別表示網格的高和寬 n 100 m 100 output 每行輸出網格中有多少個矩形.sample input ...