请从Code Jam 2009解释此算法

时间:2009-12-05 13:36:21

标签: algorithm data-structures breadth-first-search

这是来自round 1B 2009 Problem C "Square Math"的问题。我知道比赛分析已发布。但是,当一个节点可以多次访问时,我没有开始实现BFS。我只能使用DFS实现。 (因为上下文隐式保存在递归DFS中)。如何使用BFS?

1 个答案:

答案 0 :(得分:1)

您必须明确保存上下文。

对于每个数字单元格,保留一个表格,其中包含可以由长度为N的路径生成的所有总数,该路径的长度为N,并且每个总数都是生成它的最佳路径。

对于N = 1,这个数据很容易产生(每个单元格的一条平凡路径)并且给定给定N的表格,你可以通过扩展每个路径很容易地为下一个更大的N生成表格。