深度優(yōu)先搜索

題目原意:

小哼去解救小哈愕难,地圖為矩陣,上面有許多障礙物。求解救小哈的最短路徑猫缭。

INPUT
第一行:兩個數(shù)據(jù)葱弟,行數(shù)n和列數(shù)m,中間用空格隔開
接下來的n行m列:輸入迷宮猜丹,0表示空地芝加,1表示障礙物,每一行的每個數(shù)用空格隔開
最后一行:四個數(shù)據(jù)射窒,前兩個為迷宮入口的坐標藏杖,后兩個為小哈的x和y坐標

#include <cstdio>
int n,m,p,q,min=99999999;
int a[51][51],book[51][51];
void dfs(int x,int y,int step)
{
    int next[4][2]={
        {0,1},//向右走
        {1,0},//向下走
        {0,-1},//向左走
        {-1,0}//向上走
    };
    int tx,ty,k;
    //判斷是否到達小哈的位置
    if(x==p&&y==q)
    {
        //更新最小值
        if(step<min)
            min=step;
        return ;//這里的返回值很重要
    }
    //枚舉四種走法
    for(k=0;k<=3;k++)
    {
        //計算下個點的坐標
        tx=x+next[k][0]; //下個點的橫坐標
        ty=y+next[k][1];//下個點的縱坐標
        /*
         第一輪,k=0轮洋,x+0制市,行的位置不變;    y+1弊予,列的位置向右移一個祥楣;總的來說向右移動,對應{0,1}
         第二輪汉柒,k=1误褪,x+1,行的位置向下移動碾褂; y+0,列的位置不變兽间;     總的來說向下移動,對應{1,0}
         ......
         
         */
        //判斷是否越界
        if(tx<1||tx>n||ty<1||ty>m)
            continue;
        //判斷該點是否為障礙物或者已經(jīng)在路徑中
        if(a[tx][ty]==0&&book[tx][ty]==0)
        {
            book[tx][ty]=1;//標記這個點已經(jīng)走過
            dfs(tx, ty, step+1);//開始嘗試下一個點
            book[tx][ty]=0;//嘗試結束,取消這個點的標記
        }
    }
    return ;
    /*
     總的來說是自身不斷的調用自己
     總是按照next的方向走正塌,
     如果向規(guī)定的第一個方向走嘀略,如果沒有到達終點并且沒有碰到墻的話,繼續(xù)走下一個點
     如果這個方向的點碰到墻的話乓诽,就返回換規(guī)定的下一個方向走帜羊,如果方向都嘗試完都走不通的話,就返回上一個點鸠天,直到到達終點
     */
}
/*
 測試數(shù)據(jù):
 5 4
 0 0 1 0
 0 0 0 0
 0 0 1 0
 0 1 0 0
 0 0 0 1
 1 1 4 3
 */
int main()
{
    int i,j,startx,starty;
    //讀入n和m讼育,n為行,m為列
    scanf("%d %d",&n,&m);
    //讀入迷宮
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            scanf("%d",&a[i][j]);
    //讀入起點和終點坐標
    scanf("%d %d %d %d",&startx,&starty,&p,&q);
    //從起點開始搜索
    book[startx][startx]=1;//標記起點已在路徑中稠集,放置后面重復再走
    //第一個參數(shù)是起點坐標的x坐標奶段,第二個參數(shù)是起點的y坐標,第三個參數(shù)是初始步數(shù)為0
    dfs(startx,starty,0);
    printf("%d",min);
    getchar();getchar();
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末剥纷,一起剝皮案震驚了整個濱河市痹籍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晦鞋,老刑警劉巖词裤,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刺洒,死亡現(xiàn)場離奇詭異,居然都是意外死亡吼砂,警方通過查閱死者的電腦和手機逆航,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渔肩,“玉大人因俐,你說我怎么就攤上這事≈苜耍” “怎么了抹剩?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蓉坎。 經(jīng)常有香客問我澳眷,道長,這世上最難降的妖魔是什么蛉艾? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任钳踊,我火速辦了婚禮,結果婚禮上勿侯,老公的妹妹穿的比我還像新娘拓瞪。我一直安慰自己,他們只是感情好助琐,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布祭埂。 她就那樣靜靜地躺著,像睡著了一般兵钮。 火紅的嫁衣襯著肌膚如雪蛆橡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天掘譬,我揣著相機與錄音泰演,去河邊找鬼。 笑死屁药,一個胖子當著我的面吹牛粥血,可吹牛的內容都是我干的柏锄。 我是一名探鬼主播酿箭,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趾娃!你這毒婦竟也來了缭嫡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤抬闷,失蹤者是張志新(化名)和其女友劉穎妇蛀,沒想到半個月后耕突,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡评架,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年眷茁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纵诞。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡上祈,死狀恐怖,靈堂內的尸體忽然破棺而出浙芙,到底是詐尸還是另有隱情登刺,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布嗡呼,位于F島的核電站纸俭,受9級特大地震影響,放射性物質發(fā)生泄漏南窗。R本人自食惡果不足惜揍很,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矾瘾。 院中可真熱鬧女轿,春花似錦、人聲如沸壕翩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽放妈。三九已至北救,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芜抒,已是汗流浹背珍策。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宅倒,地道東北人攘宙。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拐迁,于是被迫代替她去往敵國和親蹭劈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容