Jewel Pair
題目說明
你手上有一條由 n 顆寶石組成的長鏈,其中每顆寶石都有一個正整數編號代表其種類,
你的任務是從這條長鏈中切出最多組成對小段。切割規則如下:
- 一個連續子序列的第一顆與最後一顆寶石編號必須相同
- 兩組序列之間除了端點可以重合外,內部區間不可重疊。
例如:若第一組選取範圍為第i到第j顆寶石,
第二組選取範圍為第a到第b顆,
則必須滿足 a >= j 或 i >= b。
請撰寫一個程式:計算出在不違反規則的前提下,最多可以切出多少組成對小段。
輸入
由鍵盤輸入寶石數量整數 n (1 <= n <= 100000),
以及 n 個代表寶石種類的正整數。
輸出
請由螢幕輸出該組測試資料中最多能切出的成對小段數量。
樣本測資
| 輸入 | 輸出 | 說明 | |
|---|---|---|---|
| DataSet1 | 5 1 2 3 4 5 |
0 | 數字完全不重複,無法切出任何一段 |
| DataSet2 | 6 1 2 1 2 1 2 |
2 | 最多可切出2段。 [1,2,1] 與 [1,2,1],其中index 2的1同時為兩段端點。 |
| DataSet3 | 5 1 1 1 1 1 |
4 | 最多可切出4段。相鄰的 1, 1 皆可成對:[1,1], [1,1], [1,1], [1,1] |
| DataSet4 | 8 10 20 10 30 40 30 50 50 |
3 | 最多可切出3段。[10,20,10], [30,40,30], [50,50] |
Comments