發布時間: July 15, 2017, 6:24 p.m. 最後更新時間: Sept. 15, 2023, 1:49 p.m. 時間限制: 1000ms 記憶體限制: 128M
狄倫老師出了一個有趣的字串找尋問題,其描述如下。給定兩串僅含有大寫英文字母的字串 STRING 1 與 STRING 2 ,其中 STRING 1 的長度不大於 STRING 2 的長度,試著在 STRING 2 找出含有 STRING 1 內所有字母的子字串。子字串的第一個字母必須與 STRING 1 的第一個字母相同,而子字串最後一個字母必須與 STRING 1 的最後一個字母相同。同時,STRING 1 內的所有字母都必須能分別依序地對應到子字串中不同位置並與它們各自相同的字母。注意,子字串被對應到的字母由左到右順序必須與原本它們在 STRING 1 的順序是一樣的,但它們在子字串中可以不用一定必須出現在緊鄰的位置。在給定兩個字串 STRING 1 與STRING 2 的情形下,請找出在 STRING 2 中滿足上述的條件並且長度為前 N 條最長的子字串,進而算出它們的長度總和。如果找不出 N 條,就只計算找出子字串的長度總和。
舉例如 STRING 1 為 ABC,STRING 2 為 DAEBCEBACACBCD。最長的前三個子字串為 AEBCEBACACBC、AEBCEBACAC、AEBCEBAC,總長度為12+10+8=30。
輸入第一列為 STRING 1,其組成為英文大寫字母,字母中間沒有空格(STRING 1 的長度小於 100 個字母數)。輸入第二列為 STRING 2,其組成為英文大寫字母,字母中間沒有空格(STRING 2 的長度小於 100 個字母數)。輸入第三列為一個整數值 N(N 不大於 100),代表要找出前 N 條長度最長並滿足題目條件的子字串。
(0neKind補充:在此規定 STRING 1 長度 >= 2,因為題目沒有規定長度為 1 時該如何配對。
輸出為一個整數,代表前 N 條長度最長並滿足條件題目條件的子字串的長度總和,若無法找出則輸出 0。
ABC DAEBCEBACACBCD 3
30