首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BFS或DFS的应用

BFS或DFS的应用
EN

Stack Overflow用户
提问于 2013-03-25 07:35:15
回答 2查看 343关注 0票数 0

我需要帮助来解决这个问题,我试着使用二维数组,然后找到最少的交换数量。我不确定该如何解决这个问题。是使用BFS还是DFS?

给你两个四位数的数字。第一个数字是初始数字,第二个数字是目标数字。编写一个java程序,使用尽可能少的操作将初始数转换为目标数。可用的操作如下:四位数中的一个加1。9加1的结果是0。从四位数字中的一个数字减去1。0减去1得到9。交换两个相邻的数字

例1:首字母编号:1111

最终编号: 9999

最小操作数:8

例2:首字母编号:1234

最终编号: 2144

最小操作数:2

EN

回答 2

Stack Overflow用户

发布于 2013-03-25 08:23:08

BFS。

当DFS找到第一个解时,它通常不是在尽可能小的移动次数中找到的解。当解决方案很接近时,它还可以探索长而无意义的路径(如果您不记得访问过的节点,它可能会陷入无限循环)。这些问题可以通过迭代加深DFS来解决,如果有内存限制,这可能是可取的,但对于如此小的搜索空间,BFS更简单。

票数 0
EN

Stack Overflow用户

发布于 2014-08-04 12:48:00

您应该使用BFS算法,因为它将为您提供将第一个数字转换为目标数字的最短方法。DFS只探索路径,而不是最短路径。在某些情况下,DFS可能比BFS更快地找到解决方案,但没有算法保证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15605457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档