codevs 2980 买帽子 题解报告
噫本來今天高高興興
噗
本來今天不想寫博客來著,
哎,看見棟棟大神做題了,
我就跟風(fēng)過去瞅瞅。。。
題目描述 Description
小A想買一頂新帽子,商店里有n個(gè)帽子 (1<=n<=100),每頂帽子上有一個(gè)字符串,字符串的長(zhǎng)度為len (1<=len<=500)。她認(rèn)為每頂帽子上的字符串看起來越對(duì)稱則代表這頂帽子更漂亮。根據(jù)每個(gè)字符串,我們可以算出其對(duì)稱系數(shù)k (即最長(zhǎng)對(duì)稱子序列的長(zhǎng)度) 來比較各頂帽子在小A心中的漂亮程度。
輸入描述 Input Description
輸入數(shù)據(jù)第一行只有一個(gè)n,表示有個(gè)字符串。
接下來有n行,每行一個(gè)字符串。
輸出描述 Output Description
輸出有n行,每行一個(gè)字符串,表示按對(duì)稱系數(shù)從大到小排序后的字符串,對(duì)稱系數(shù)相同時(shí)按字典序排序。
樣例輸入 Sample Input
5
pineapple
banana
peach
coconut
character
樣例輸出 Sample Output
banana
character
pineapple
coconut
peach
數(shù)據(jù)范圍及提示 Data Size & Hint
數(shù)據(jù)范圍:
1<=n<=100
1<=len<=500
1<=k<=len
提示:
對(duì)稱系數(shù)k是指最長(zhǎng)對(duì)稱子序列的長(zhǎng)度,非最長(zhǎng)對(duì)稱子串的長(zhǎng)度。
題意理解沒啥難度
就是求一個(gè)字符串的最長(zhǎng)回文子序列
注意是子序列不是字串、
字串的話完全可以暴力。
子序列就要用到DP了;;。
噫
DP去死!
。。。。。
對(duì)于每個(gè)字符串,我們可以將他翻轉(zhuǎn);
生成另一個(gè)字符串;
之后,只需要求這兩個(gè)字符串的最長(zhǎng)公共子序列就好了,
用LCS求;
具體做法就是一個(gè)二維的DP矩陣
之后枚舉每一個(gè)點(diǎn)。
如果對(duì)于這個(gè)i j 兩字符串相同
f[i][j]=f[i-1][j-1]+1
else
f[i][j]=max(f[i-1][j],f[i][j-1]);
最后得到的f[len][len] 即為答案
注意從1開始枚舉,防止數(shù)組越界。
嗯
嗚啦啦啦啦
。0.0.0
總結(jié)
以上是生活随笔為你收集整理的codevs 2980 买帽子 题解报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智慧零售erp通用版管理系统+门店管理+
- 下一篇: ABAP查看表更改记录的方法