有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。
給定兩個正整數int x,int y,請返回機械人的走法數目。保證x+y小於等於12。
**:
//機械人
public static int count(int x,int y)
//count(x-1,y)代表向下走一步後所有的情況,count(x,y-1)代表向右走一步後的所有情況
return count(x-1,y)+count(x,y-1);
}
機械人每走一步都有兩種走法,要麼走右面,要麼有下面。
如果走右面,那麼矩陣(網格)就縮小為x*(y-1)
如果走下面,那麼矩陣(網格)就縮小為(x-1)*y
試想一直走下去,當矩陣只有一行或一列的時候,機械人就只有一種走法。(是不是很想遞迴出口呢)
矩陣的縮小是問題化簡
遞迴出口是矩陣為一行或一列
那麼我們就可以假設機械人的第一步分為兩種情況
(1)向下走一步,矩陣縮小為(x-1) * y
(2)向右走一步,矩陣縮小為x * (y-1)
我們只考慮機械人的第一步,將這兩種情況的走法相加起來就是機械人的所有走法,因為隨著遞迴,矩陣最終會變為一列或一行,返走回數值1供上層計算,最終遞迴出來的就是走法數!
如果有錯誤請提醒我呀
機械人走方格
一 有乙個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 機械人走方格 遞迴計算...
機械人走方格
給定兩個正整數intx,inty,代表乙個x乘y的網格,現有乙個機械人要從網格左上角頂點走到右下角,每次只能走一步且只能向右或向下走,返回機械人有多少種走法。保證x y小於等於12。測試樣例 2,2返回 2此題是動態規劃的常規思路,每走到乙個方格時,機械人都是由左邊和上邊到達到達的方格,取從左邊和上...