更新时间:2021-06-07 17:50:43作者:admin2
不用考虑程序的效率,因为9*8*7 = 504 步,对计算机而言不算啥。
思路是这样的,不计顺序,这三个数由小到大分别为IJK的话,用3层循环嵌套
伪代码如下:
种数 = 0
I = 1 TO 7 {
J = I+1 TO 8 {
K = J + 1 TO 9 {
if i + j + k = 19 { 种数 + 1 ;输出一行IJK}
}
}
}
输出 种数
伪代码结束
自己用JAVA写一下吧,结果是
2+8+9=19
3+7+9=19
4+6+9=19
4+7+8=19
5+6+8=19
种数 = 5
你用的是回溯法,估计你是想要实现最短通路。我给出一种思路。在一幅无向图中,如果所有的边都有相同的权,要求解某点到其他点的最短路径可以用迪杰斯特拉算法,也可以用广度优先遍历的方法。广度优先遍历的生成树即为树根到其他顶点的最短路径。相对于迪杰斯特拉算法其时间复杂度为O(n)。余下的问题就是怎么将迷宫抽象成无向图了。方法是对二维迷宫中的每一个“。”编号,从1起,采用邻接表法存储,对每个“。”其周围四个方向是“。”的记入中心“。”对应编号的邻接表项中,对每个“。”都这样一次,如此便形成了迷宫对应的无向图,用广度法或者迪法以出或入口为起点即可实现最短通路的求解。