`
king_tt
  • 浏览: 2233854 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

uva 11552 - Fewest Flops ( 多维dp )

 
阅读更多


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



题目点击打开链接


题意

给一个字符串,把它分为k块,例如字符串“helloworld”分成2块,"hello", "world"

每一块里面的字母可以任意的排序。

最终字符串, 连续的一样的字母算作一个chunk,问总chunks最少是多少?



思路

f[i][j]: 第i块的第j位排在最后一位的最少chunks


对于每个单独的一块,它的chunks就是等于出现的不同字母数

第i块的chunks记做 chunks[i]


如果第i-1块的最后一位和第i块的第一位是一样的,那么可以合并这两个,总chunks可以减少一个


f[i][j] = min{ 如果i-1块的第k位和i块的第一位不同: f[i-1][k]+chunks[i],
如果i-1块的第k位和i块的第一位相同: f[i-1][k]+chunks[i]-1 }


代码

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics