c++DFS算法問題
2 回答

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
這個題是比較基本的DFS問題,建議你自己多看多試一下,自己做出來意義更大一點。我想提供給你另外一種思路,時間復雜度更低,對于每個坐標(X,Y)可以從(x-1,y)和(x,y-1)到達,所以到這一點的可能數就是到達兩個先驅點的方案數量的和,把黑洞設置成0就行了

阿晨1998
TA貢獻2037條經驗 獲得超6個贊
1234567891011121314151617181920212223242526272829303132 | #include "iostream" #include <string.h> using namespace std; int c = 0; int n, m, num; int arr[20][20]; void search( int x, int y) { if (x > n || y < 1) return ; if (arr[x][y] == 1) //碰到黑洞 return ; if (x == n && y == 1) c++; search(x + 1, y); search(x, y - 1); return ; } int main() { int x, y; memset (arr, 0, sizeof arr); cin >> n >> m >> num; for ( int i = 0; i < num; i++) { cin >> x >> y; arr[x][y] = 1; //1代表黑洞 } search(1, m); cout << c << endl; return 0; } |
- 2 回答
- 0 關注
- 846 瀏覽
添加回答
舉報
0/150
提交
取消