【问题标题】:tower of boxes (stacking cubes)盒子塔(堆叠立方体)
【发布时间】:2010-11-25 19:11:18
【问题描述】:

我上周接到了这个任务,但找不到一个好的算法来解决这个问题。所以这里是描述:

您可以通过构建立方体来建造稳定的塔,方法是不要将较大的立方体放入较小的立方体中,如果您不将较硬的立方体放入较轻的立方体中。编写一个程序,为您提供具有 n 个立方体的最高塔。
输入:
在 in.txt 的第一行中有立方体的数量 n (1 = 输出:
您必须将尽可能高的稳定塔的 m 数写入 out.txt。在第二行中,您必须从下到上写下塔的序数 m。塔的高度是指所有立方体的边长的数量(而不是立方体的数量)。如果有多个解决方案,您可以提供任何您想要的
输入输出示例:
输入:
5
10 3
20 5
15 6
15 1
10 2
和输出:
3
2 1 5
这是程序的限制。时间限制:0.2 秒。内存限制:16 Mb

我希望你能帮我解决这个问题。谢谢大家的帮助

【问题讨论】:

  • 我修正了你的格式。发帖前请务必查看预览窗口!
  • 标记为作业,如果不是,请随意删除。
  • Tower of Hanoi的可能重复
  • @ripper:实际上完全不相关。
  • @Konrad:第二个数字是“硬度”。

标签: algorithm dynamic-programming


【解决方案1】:

关系“块A可以放在块B之上”在块上定义了partial order。您可以使用Kahn's algorithm(又名“拓扑排序”)将其转换为总顺序,然后您可以按深度顺序遍历到find the longest path

【讨论】:

  • 当我听到算法名称是 William Shatner 说出“KHANNN!!!!”时,我能想到的只是
  • +1。当然,一旦你认识到它只是在偏序(或 DAG)中找到最长的路径,就有很多算法可以做到这一点。
  • 我找到了 LIS 来解决这个问题。但不知道如何正确使用。有人能告诉我如何解决这个问题吗?
  • 我没有看到将您的问题转换为longest increasing subsequence 问题的简单方法,因此解决后者的算法对您没有多大用处。
  • 好的,请您解释一下如何使用您推荐的算法。我读了很多次你写的但不能理解它。 :(
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2013-02-24
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多