更新時間: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起,采用鄰接表法存儲,對每個“?!逼渲車膫€方向是“?!钡挠浫胫行摹啊!睂幪柕泥徑颖眄椫校瑢γ總€“?!倍歼@樣一次,如此便形成了迷宮對應的無向圖,用廣度法或者迪法以出或入口為起點即可實現最短通路的求解。