0
我想計算並打印從矩陣左下角到參數中給定目標的所有可能路徑。你總是從座標(1,1)開始,並且必須向上或向右移動。但是,目標是通過參數傳遞的。例如:CountPath(3,4)計數/打印路徑 - 從(1,1)到(m,n)
我已經實現了找到正確的路徑數量,但發現我必須從我的目標開始並移動到START,因爲輸入是目標位置。
int CountPath (int row, int column)
{
if (row == 1 || column == 1)
return 1;
else
return CountPath(row - 1, column) + CountPath(row, column - 1);
}
實施例的輸入/輸出: 輸入:3 4 輸出:路徑#是10
void main()
{
int m, n;
cin >> m >> n;
cout << "The # of paths is " << CountPath(m, n) << endl;
}
我需要一些澄清上如果我正確地這樣做,或如果有一種方法從(1,1)開始,然後向上和向右移動。印刷應顯示所有可能的路徑,例如:
(1,1)-->(2,1)-->(3,1)-->(3,2)-->(3,3)-->(3,4) (1,1)-->(2,1)-->(2,2)-->(3,2)-->(3,3)-->(3,4) ...
那麼,有沒有任何遞歸的方式,我可以從(1,1)開始,向上和向右給了這些規則?如果沒有,我怎麼才能按照上面的順序打印它們呢?
我限制在main()函數,我給。我無法改變它,這正是我想到的幾乎所有解決方案中遇到麻煩的地方。這就是爲什麼我甚至想知道是否有可能從(1,1)到(m,n)實現它,反之亦然。 – jiska 2014-11-25 01:01:09
你可以製作一個虛擬函數'CountPath',只有2個參數調用(並返回)你的真實函數,比如我們稱之爲'RealCountPath'。應該解決你的問題:) – Kelm 2014-11-25 01:12:00
你能想到任何可能的解決方案只給予main()和CountPath,否則? – jiska 2014-11-25 01:28:35