2013-02-15 30 views
0

我的講師提供了這個挑戰,我一直在嚴重掙扎。我編寫了設置此解決方案所需的類的文件,但我不知道如何實現它,這裏是我需要添加算法的類。二維數組中的C++路徑查找

#include "Solver.h" 

int* Solver::findNumPaths(const MazeCollection& mazeCollection) 
{ 
    int *numPaths = new int[mazeCollection.NUM_MAZES]; 


    return numPaths; 
} 

這裏是我們提供的問題描述。有沒有人知道如何實現這一點或讓我走上正軌,謝謝!

00C,我們需要你的幫助了。

受到挫折的憤怒,惡魔般的主謀Dr Russello Kane釋放了一堆重武器的松鼠攻擊BCB,並消除了所有美麗優秀的計算智能學生。

我們需要在短時間內對此威脅做出迴應,並計劃部分阻止BCB的門廳。持槍的松鼠將進入方形[1,1]的BCB並衝向[10,10]所示的出口。

這是一個廣場是不通的毛茸茸的齧齒動物。重要的是,松鼠的嗜血是這樣的,他們只會向着出口移動 - 或者向右移動一個方格,或者向下移動一個方格。即使路障阻礙了他們的進場,松鼠也不會向上或向左移動。

我們的棺木需要進行大量的測試,以確定路障安置將如何阻礙松鼠的運動。在每個測試中,許多正方形將被封鎖,並且您必須確定從開始到退出的不同路徑的總數(遵守上面提到的松鼠移動模式)。

我們已經聽到一些我們的boffin混淆了關於遞歸計數算法的一些問題,其他人則關於遞歸和迭代之間的關係,但我相信,OOC,你知道比被誤導性建議分散注意力更好。

回答

0

開始瓦特/顯而易見的:

int count = 0; 

void countPaths(x, y) { 
    if (x==10 && y==10) { 
    count++; 
    return; 
    } 
    if (can-move-right) 
    countPaths(x+1, y); 
    if (can-mopve-down) 
    countPaths(x, y+1); 
} 

開始通過調用countPaths(0,0)

不是最有效率的遠景,但它會工作。然後尋找優化的方法(例如,您最終將從接近目標的方塊重新計算路徑 - 減少這項工作可能會產生巨大差異)。