馬從(0,0)出發,只能往右(右上或右下)跳,從(0,0)點到(8,4)點,這個區域內有多少種不同的路徑,并列印出各種路徑。
以下是題目提供的思路,我看不太懂:
(1)針對題目中的坐標點,我們設計一個Point類來描述我們當前所處的狀態,記錄其橫坐標和縱坐標。
(2)要列印出一條路徑,就需要一個動態陣列來記錄走過的點,采用STL中的vector可以實作,對應程式中的path,其型別為vecetor<Point>。
(3)要記錄下所有的路徑,我們需要一個記錄“一個完整的路徑”的動態陣列,對應程式中的ret,型別為vector<vector<Point>>。
(4)針對當前我們所處的狀態,我們可以根據題目中的規則擴展出下一步可以到達的狀態節點(注意不要越界),即選擇串列,對應程式中的ls,型別當然是vector<Point>。
(5)當我們從當前節點做出“選擇”(即下一步對應的那個點,記為ST)之后,需要將該“選擇”從選擇串列中移除,并將該“選擇”添加到路徑當中去,接著繼續按照規則擴展節點做“選擇”,直至到達目標節點;然后需要ST重新添加回選擇串列中。
有沒有老哥能指點迷津,給個思路
uj5u.com熱心網友回復:
比如點(5,5),到下一步只能是走日字,首先是橫坐標,可以為3,4,6,7,縱坐標類似,也只能為3,4,6,7轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35917.html
標籤:C++ 語言
