C中的动态编程资源?

时间:2011-01-09 08:00:11

标签: c algorithm dynamic-programming

我将在明天将在线Google测试写成更新鲜的。显然,他们肯定会在动态编程上遇到一个问题?

有没有人知道在C中收集DP问题的好资源以及解决方案?我知道什么是DP&曾经两次使用它。但是我觉得在测试中破解DP问题,以前的典型问题实践会使其更容易接近。

任何有关C解决方案的优秀资源或问题集都将受到高度赞赏。感谢。

4 个答案:

答案 0 :(得分:8)

好的,所以我真的希望这不算“无耻的自我推销”,因为所有这些链接都是我在个人网站上发布的代码片段。如果这不合适,请告诉我,我可以将它们删除。

以下是一些非常有趣的DP问题:

  1. 最小编辑距离:给定两个字符串A和B,找到将A转换为B所需的最短编辑数(插入,删除或替换)。这称为Levenshtein距离。 (My solution)
  2. 最佳序列比对:给定两个字符串A和B,找到必须插入序列以对齐A和B的最小间隙数。这称为Needleman-Wunsch算法。 (My solution)
  3. 单源最短路径:给定有向图G和单个节点s,找到图中从s到每个其他节点的最短路径的长度,假设边可以是正的或负的,但不存在循环。这是Bellman-Ford算法。 (My solution)
  4. 所有对最短路径:给定有向图G,找到所有节点对之间的最小距离。这是Floyd-Warshall算法。 (My solution)
  5. 希望这有点有用,祝你明天好运!

答案 1 :(得分:1)

Topcoder网站太棒了。并非所有问题都使用DP,但很多都可以。免费完全访问过去比赛的所有问题,这些问题有3个不同的难度级别,以及来自问题作者的每个问题的赛后解释。不仅如此,您还可以快速挖掘竞争对手提交的源代码解决方案。

有一段时间没有回到那里,但他们至少允许C ++,Java,C#,我现在相信其他几种语言。

答案 2 :(得分:1)

我建议你,收集一本书“生物信息学算法简介”。这章有一篇关于DP的章节。由于@templatetypedef提到最小编辑距离,最佳序列对齐它还有其他问题。虽然没有实现它。你必须自己动手。但是你会发现读它们很有意思。

答案 3 :(得分:1)

要练习,您可以在SPOJ中解决其中一个可用问题。要轻松识别DP,您可以查看Problems Classifier(关键字:dp)。