刷題-leetcode:62. 不同路徑

題目地址:https://leetcode-cn.com/problems/unique-paths/

一個機器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為“Start” )厨埋。

機器人每次只能向下或者向右移動一步荡陷。機器人試圖達到網(wǎng)格的右下角(在下圖中標(biāo)記

為“Finish”)。

問總共有多少條不同的路徑设易?

image.png

例如蛹头,上圖是一個7 x 3 的網(wǎng)格渣蜗。有多少可能的路徑?

說明:m 和 n 的值均不超過 100

示例 1:

輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開始讼昆,總共有 3 條路徑可以到達右下角骚烧。

  1. 向右 -> 向右 -> 向下
  2. 向右 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向右

示例 2:

輸入: m = 7, n = 3
輸出: 28

編程思路

此題用到兩個技巧:

  • 動態(tài)規(guī)劃
    為什么使用動態(tài)規(guī)劃?因為從左上角(起點)到達每一個地點的不同路徑數(shù)目既峡,都可以通過與其鄰接的地點的路徑數(shù)目累加獲得碧查。如下圖,計算右下角地點的路徑數(shù)目可以通過其前序地點的路徑數(shù)相加而來传惠。

    image.png

  • 圖的廣度優(yōu)先遍歷
    機器人行走的路徑點卦方,可以抽象成有向圖腐螟,從起點節(jié)點出發(fā),進行廣度優(yōu)先遍歷衬廷,即可從起點到終點逐個完成路徑數(shù)目的的計算汽绢。為什么用廣度優(yōu)先而不用深度優(yōu)先?因為深度優(yōu)先會出現(xiàn)某靠后節(jié)點所需的前序節(jié)點尚未計算的情況跌宛,而廣度優(yōu)先不會积仗。3x2情況可以抽象成如下的(Graph)寂曹,來一次廣度優(yōu)先遍歷,最后一個節(jié)點遍歷完成后便得到了答案漱挚。(畫中數(shù)值的含義是從起點到該節(jié)點的不同路徑的數(shù)量)

    image.png

代碼

#include <iostream>
#include <queue>

using namespace std;

class Solution {
public:
    int uniquePaths(int m, int n) {//m :width,n :height
        //two queues for BFS
        queue<int> x;
        queue<int> y;
        //two var for queue operation
        int tmpX;
        int tmpY;
        
        int **pathAmount;//store his known path amount
        bool **nodePushed;//store visit state
        pathAmount=new int*[n];
        nodePushed=new bool*[n];
        for(int tmp=0;tmp<n;tmp++){           
            pathAmount[tmp]=new int[m];
            nodePushed[tmp]=new bool[m];
            for(int inner=0;inner<m;inner++){
                pathAmount[tmp][inner]=0;
                nodePushed[tmp][inner]=false;
            }
        }
        
        pathAmount[0][0]=1;
        //start position in
        x.push(0);
        y.push(0);
        nodePushed[0][0]=true;
        //BFS
        while(x.size()>0){
            //queue head out
            tmpX=x.front();
            x.pop();
            tmpY=y.front();
            y.pop();

            if((tmpX+1)<m){//non m boader
                pathAmount[tmpY][tmpX+1]+=pathAmount[tmpY][tmpX];//update path amount of the next
                if(!nodePushed[tmpY][tmpX+1]){//push into queue if not visited
                    x.push(tmpX+1);
                    y.push(tmpY);
                    nodePushed[tmpY][tmpX+1]=true;
                }
            }
            if((tmpY+1)<n){//non n boader
                pathAmount[tmpY+1][tmpX]+=pathAmount[tmpY][tmpX];//update path amount of the next
                if(!nodePushed[tmpY+1][tmpX]){//push into queue if not visited
                    x.push(tmpX);
                    y.push(tmpY+1);
                    nodePushed[tmpY+1][tmpX]=true;
                }
            }
        }
        return pathAmount[n-1][m-1];
    }
};

int main(){
    Solution solution;
    printf("res:%d",solution.uniquePaths(21,21));
}

性能:

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侣背,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贩耐,更是在濱河造成了極大的恐慌,老刑警劉巖鸟赫,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抛蚤,死亡現(xiàn)場離奇詭異寻狂,居然都是意外死亡,警方通過查閱死者的電腦和手機缀壤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門塘慕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人图呢,你說我怎么就攤上這事「疤荆” “怎么了指蚜?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵摊鸡,是天一觀的道長。 經(jīng)常有香客問我些椒,道長掸刊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任石窑,我火速辦了婚禮蚓炬,結(jié)果婚禮上肯夏,老公的妹妹穿的比我還像新娘。我一直安慰自己驯击,他們只是感情好徊都,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著主之,像睡著了一般。 火紅的嫁衣襯著肌膚如雪几睛。 梳的紋絲不亂的頭發(fā)上史翘,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天琼讽,我揣著相機與錄音洪唐,去河邊找鬼。 笑死问欠,一個胖子當(dāng)著我的面吹牛粒蜈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枯怖,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼度硝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椒袍?” 一聲冷哼從身側(cè)響起藻茂,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤辨赐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兼吓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體森枪,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡审孽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年佑力,在試婚紗的時候發(fā)現(xiàn)自己被綠了筋遭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡编饺,死狀恐怖响驴,靈堂內(nèi)的尸體忽然破棺而出豁鲤,到底是詐尸還是另有隱情,我是刑警寧澤琳骡,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布楣号,位于F島的核電站,受9級特大地震影響耘纱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毕荐,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一束析、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憎亚,春花似錦员寇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至什往,卻和暖如春扳缕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工躯舔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粥庄。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓丧失,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惜互。 傳聞我的和親對象是個殘疾皇子布讹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容