更新時間:2021-06-07 17:50:43作者:admin2
不用考慮程序的效率,因為9*8*7 = 504 步,對計算機而言不算啥。
思路是這樣的,不計順序,這三個數(shù)由小到大分別為IJK的話,用3層循環(huán)嵌套
偽代碼如下:
種數(shù) = 0
I = 1 TO 7 {
J = I+1 TO 8 {
K = J + 1 TO 9 {
if i + j + k = 19 { 種數(shù) + 1 ;輸出一行IJK}
}
}
}
輸出 種數(shù)
偽代碼結(jié)束
自己用JAVA寫一下吧,結(jié)果是
2+8+9=19
3+7+9=19
4+6+9=19
4+7+8=19
5+6+8=19
種數(shù) = 5
你用的是回溯法,估計你是想要實現(xiàn)最短通路。我給出一種思路。在一幅無向圖中,如果所有的邊都有相同的權(quán),要求解某點到其他點的最短路徑可以用迪杰斯特拉算法,也可以用廣度優(yōu)先遍歷的方法。廣度優(yōu)先遍歷的生成樹即為樹根到其他頂點的最短路徑。相對于迪杰斯特拉算法其時間復(fù)雜度為O(n)。余下的問題就是怎么將迷宮抽象成無向圖了。方法是對二維迷宮中的每一個“。”編號,從1起,采用鄰接表法存儲,對每個“。”其周圍四個方向是“。”的記入中心“。”對應(yīng)編號的鄰接表項中,對每個“。”都這樣一次,如此便形成了迷宮對應(yīng)的無向圖,用廣度法或者迪法以出或入口為起點即可實現(xiàn)最短通路的求解。