uva 1351 String Compression(字符串区间dp)



本文出自 http://blog.csdn.net/shuangde800



题目来源点击打开链接


题目大意

给一个字符串,可以把连续相同的部分进行缩写成k(S)的形式,S是一个字符串,k表示有连续相同的S

例如,abgogogogo,可以缩写成ab4(go). 还可以嵌套缩写,比如

“nowletsgogogoletsgogogo”, 缩写成“now2(lets3(go))”



思路

一道区间dp,但是这题并不好想
f(i, j)表示字符串的i~j位的最小位数
那么
f(i, j) = min{
min{ f(i,k)+f(k+1, j), i<=k<j },
min{ digitNum(k)+f[l][l+k-1]+2, 如果字符串可以由前k个字符串重复组成的 }
}
digitNum(k)表示数字k的位数

判断区间(i, j)是否有由连续k个组成的字符串连续组成的,直接用O(n)的时间判断



代码

<script src="https://code.csdn.net/snippets/559.js" type="text/javascript"></script>


你可能感兴趣的:(compression)