【问题标题】:Optimal figures arrangement on a square matrix方阵上的最佳图形排列
【发布时间】:2013-05-15 02:53:13
【问题描述】:

我正在尝试解决以下问题,但想不出如何:

我们有一组图形(直线、正方形、“加号”等),它们最初被放置在一个矩阵上,因此其中一些是重叠的。我们正在寻找最少的移动次数,以免数字重叠。图形不会沿对角线移动,只有垂直和水平移动。

谢谢

【问题讨论】:

  • 推荐您阅读本站faq页面。
  • @HosseinNarimaniRad:我怀疑你的评论对 OP 有帮助。如果您认为问题有问题,为什么不建议如何改进问题呢?
  • 如果您描述了您是如何解决问题的,我们会更容易为您提供帮助。另外,你认为什么是“移动”?你能举一些带有预期答案的小例子吗?

标签: c# algorithm optimization


【解决方案1】:

这是breadth-first search 解决方案的概要:

  • 假设一个 (implicit) 图由顶点组成,每个顶点代表一个唯一的位置 矩阵中的所有图形,其中的边表示单个的合法移动 图形(上/下/左/右,不会导致图形移出矩阵)。
  • 通过将表示初始图窗配置的节点添加到标记为未访问的 BFS 队列中,通过此图执行广度优先搜索。
  • 对于队列中的每个未访问节点,检查它是否无重叠,如果是,则完成,是否未将其标记为已访问并添加其邻居(该配置中所有图形的所有可能的一步移动) 到 BFS 队列的末尾。您可以使用 HashSet 来存储您访问过的节点(图形位置的唯一配置),因为可以通过不同的移动序列到达相同的配置。
  • 如果 BFS 队列为空,则没有解决方案,因为您已检查了所有可能的图形配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2010-09-25
    • 2021-02-02
    • 1970-01-01
    相关资源
    最近更新 更多