题目链接:
http://poj.org/problem?id=1239
题目大意:
给一个数字串(不超过80位),可以在数字之间添加逗号,分成几个数,要求最后形成一个严格递增的序列,且要求最后一个数尽可能的小,如果有多个满足要求,则使第一个数尽可能大,如果还有多个,则使第二个最大,如此类推。求最后的序列。
解题思路:
好dp+思维。
第一次从前往后dp,dp[i]表示包括第i位往前,满足题目要求能得到的最小长度。这样就可以求出,最后一个最小的满足的数了。
求出最后一个最小的数后,从后往前dp,dp[i]表示从第i位开始往后,在满足题目要求的情况下,能得到的最大长度。这样就可以求出,按顺序依次最大的了。
PS:多个变量一次不能确定的情况下,先确定一个,然后再确定另外一个。
代码:

该博客主要解析了POJ 1239题目的解题思路,通过动态规划的方法求解如何在数字串中添加逗号形成严格递增序列。首先从前向后DP找到最小的最后一个数,再从后向前DP找到按顺序依次最大的序列。文章强调在无法同时优化多个目标时,应逐个确定关键变量。
最低0.47元/天 解锁文章
1342

被折叠的 条评论
为什么被折叠?



