【題目描述】
Follow up for "Unique Paths":
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as1and0respectively in the grid.
"不同的路徑" 的跟進問題:
現在考慮網格中有障礙物,那樣將會有多少條不同的路徑?
網格中的障礙和空位置分別用1 和 0 來表示。
【注】:m 和 n 均不超過100
【題目鏈接】
http://www.lintcode.com/en/problem/unique-paths-ii/
【題目解析】
這道題大體想法跟Unique Path是一樣的。只是要單獨考慮下障礙物對整個棋盤的影響。先看看初始條件會不會受到障礙物的影響。
假設整個棋盤只有一行,那麼在第i個位置上設置一個障礙物後,說明位置i到最後一個格子這些路都沒法走了。如果整個棋盤只有一列,那麼第i位置上的障礙物,也會影響從第i位置往後的路。所以說明,在初始條件時,如果一旦遇到障礙物,障礙物後面所有格子的走法都是0。
再看求解過程,當然按照上一題的分析dp[i][j] = dp[i-1][j] + dp[i][j-1] 的遞推式依然成立(機器人只能向下或者向右走嘛)。但是,一旦碰到了障礙物,那麼這時的到這裏的走法應該設爲0,因爲機器人只能向下走或者向右走,所以到這個點就無法通過。
處理完障礙物的特殊問題,依照unique paths改一下代碼就好。
【參考答案】