有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。注意這次的網格中有些障礙點是不能走的。
給定乙個int map(c++ 中為vector >),表示網格圖,若map[i][j]為1則說明該點不是障礙點,否則則為障礙。另外給定int x,int y,表示網格的大小。請返回機械人從(0,0)走到(x - 1,y - 1)的走法數,為了防止溢位,請將結果mod 1000000007。保證x和y均小於等於50
解析:其實是典型的遞推,用二維陣列存放座標,當前格仔的走法數量等於上方數量加左方數量,遞推式:dp[i][j] = dp[i - 1][j] + dp[j - 1][i]。
tips:容易忽略的地方在於地圖邊界,後面的格仔走法數量全等於前乙個的數量。
**:
public int countways(int map, int x, int y)
}for (int i = 0; i < x; ++i)
if (i == 0 && j == 0) else if (i == 0 && j != 0) else if (i != 0 && j == 0) else }}
return dp[x - 1][y - 1];
}
機械人走方格II
有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。注意這次的網格中有些障礙點是不能走的。給定乙個intmap c 中為vector 表示網格圖,若map i j 為1則說明該點不是障礙點,否則則為障礙。另外給定intx,int...
機械人走方格
一 有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。給定兩個正整數int x,int y,請返回機械人的走法數目。保證x y小於等於12。思路 共需走x y步,其中有x步向又走,y步向左走,即從x y步中選出x步的種類數,即...
機械人走方格
有乙個x y的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。給定兩個正整數int x,int y,請返回機械人的走法數目。保證x y小於等於12。這裡採用兩種方法實現。預設是3 3的方格。public class 機械人走方格 遞迴計算...