[蓝桥杯][算法提高VIP]项链(dfs)
題目描述
由 n(1≤n≤100) 個珠子組成的一個項鏈,珠子有紅、藍、白三種顏色,各種顏色的珠子的安排順序由鍵盤輸入的字符串任意給定。藍色用小寫字母b表示,紅色用小寫字母r表示, 白色用小寫字母w表示.
假定從項鏈的某處將其剪斷,把它擺成一條直線。先從左端向右收集同色珠子,遇到第一個異色珠子時停止. 收集過程中, 白色是一種特殊顏色, 既可以看成紅色也可以看成藍色。然后再從剩余珠子的右端向左重復上述過程。
例如:對下圖一所示的項鏈, 如果從圖一中標記的位置0處剪斷, 則按順時針順序得到wbbbwwrrbwbrrwb(如圖二所示)。這時從左端開始收集可以得到wbbbww, 共6個珠子;然后從剩余珠子右端開始收集得到wb,共2個珠子。這種剪法共可收集到6+2=8個珠子。 如果從圖一中標記的位置4處剪斷, 則按順時針順序得到wwrrbwbrrwbwbbb(如圖二所示)。這時從左端收集可以得到wwrr,共4個珠子; 然后從剩余珠子右端收集可以得到wbwbbb,共6個珠子。這種剪法共可收集到4+6=10個珠子。
要求: 在項鏈中選擇合適的剪斷位置, 使得從左右兩端收集到的珠子數目之和最大,輸出收集到的珠子數的最大值M。
輸入
由小寫字母b,r,w組成的字符串。此字符串記錄了一個首尾相接的項鏈從某處斷開后,按順時針順序得到的珠子的直線排列。
輸出
收集到的珠子數的最大值 M
樣例輸入
wbbbwwrrbwbrrwb
樣例輸出
10
思路:我們對于每一個節點,分別向左向右延伸。這個節點所延伸的長度就是這個節點所能擴展的長度。如果這個節點不是‘W’的話,擴展之后就不用再次擴展了。如果是‘W’的話,就需要再次擴展,因為這次擴展有可能比上一次擴展更優。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]项链(dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯省内模拟赛解题过程
- 下一篇: mya-tl10是什么型号