【发布时间】:2012-06-08 18:37:47
【问题描述】:
我有一个长度为1 <= |S| <= 100 和K (1 <= K <= 10) 的字符串
此字符串包含digits < K 和问号。我想用digits < K 替换这些问号,没有两个相邻的数字相等。字符串是圆形的,所以不能是这样的:1?1 或 11?。
生成的字符串必须是按字典顺序最小的字符串。
输入输出示例
input:
K = 4
string = ?????
output:
01012
我尝试了一种贪婪的方法,但对于一些未知的测试用例它失败了。我认为它需要一种 dp 方法但无法弄清楚状态,并且纯递归代码无法及时适应。
对 dp 方法有什么帮助,或者对贪婪失败的棘手测试用例有什么帮助吗?
谢谢,
【问题讨论】:
-
如果你不知道它失败的测试用例,你怎么知道它失败了?
-
不会生成一个“不满足贪心”的测试用例需要知道正在使用哪种贪心算法吗?
-
@ScottHunter 它在提交在线法官时给出了错误的答案,我已经有效地实施了我的贪婪解决方案,所以我确信它需要一个 dp 方法
-
我的贪婪方法是从左到右迭代,并在每个问号索引处放置最小有效k
-
K = 2, ???0??使贪婪方法失败。尝试了解原因。
标签: algorithm dynamic-programming greedy