日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

实现DFS之“骨头的诱惑”

發(fā)布時(shí)間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现DFS之“骨头的诱惑” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

度優(yōu)先搜索(DFS)是一個(gè)遞歸過程,有回退過程。

下面是一道OJ上的題目,借此來實(shí)現(xiàn)下DFS~


題目來源:

Zhejiang Provincial Programming Contest 2004,ZOJ2110

題目描述:

一只小狗在一個(gè)古老的迷宮里找到一根骨頭,當(dāng)它叼起骨頭時(shí),迷宮開始顫抖,它感覺到地
面開始下沉。它才明白骨頭是一個(gè)陷阱,它拼命地試著逃出迷宮。
迷宮是一個(gè)N×M 大小的長(zhǎng)方形,迷宮有一個(gè)門。剛開始門是關(guān)著的,并且這個(gè)門會(huì)在第T 秒
鐘開啟,門只會(huì)開啟很短的時(shí)間(少于一秒),因此小狗必須恰好在第T 秒達(dá)到門的位置。每秒鐘,
它可以向上、下、左或右移動(dòng)一步到相鄰的方格中。但一旦它移動(dòng)到相鄰的方格,這個(gè)方格開始
下沉,而且會(huì)在下一秒消失。所以,它不能在一個(gè)方格中停留超過一秒,也不能回到經(jīng)過的方格。
小狗能成功逃離嗎?請(qǐng)你幫助他。
輸入描述:
輸入文件包括多個(gè)測(cè)試數(shù)據(jù)。每個(gè)測(cè)試數(shù)據(jù)的第一行為三個(gè)整數(shù):N M T,(1<N, M<7;
0<T<50),分別代表迷宮的長(zhǎng)和寬,以及迷宮的門會(huì)在第T 秒時(shí)刻開啟。
接下來N 行信息給出了迷宮的格局,每行有M 個(gè)字符,這些字符可能為如下值之一:
X: 墻壁,小狗不能進(jìn)入 S: 小狗所處的位置
D: 迷宮的門 . : 空的方格
輸入數(shù)據(jù)以三個(gè)0 表示輸入數(shù)據(jù)結(jié)束。
輸出描述:

對(duì)每個(gè)測(cè)試數(shù)據(jù),如果小狗能成功逃離,則輸出"YES",否則輸出"NO"。

樣例輸入:

3 4 5

S...

.X.X

...D

4 4 8

.X.X

..S.

....

DX.X

4 4 5

S.X.

..X.

..XD

....

0 0 0

樣例輸出:

YES

YES

NO


下面貼上代碼+注釋~

Code:

[cpp]?view plaincopyprint?
  • #include<iostream>??
  • #include<cmath>??
  • using?namespace?std;??
  • ??
  • char?map[9][9];?//地圖??
  • int?n,?m,?t;????//迷宮的大小及門開啟的時(shí)間??
  • int?dir[4][2]?=?{?{0,?-1},?{0,?1},?{-1,?0},?{1,?0}?};???//4個(gè)方向??
  • bool?escape;????//記錄是否逃脫標(biāo)志??
  • ??
  • void?dfs(int?si,?int?sj,?int?di,?int?dj,?int?cnt)???//cnt為所用時(shí)間??
  • {??
  • ????if(si>n?||?sj>m?||?si<=0?||?sj<=0)?return;??//越界??
  • ????if(si?==?di?&&?sj?==?dj?&&?cnt?==?t)????????//臨界條件,在t時(shí)刻時(shí)走到出口~??
  • ????{??
  • ????????escape?=?1;??
  • ????????return;??
  • ????}??
  • ????//剪枝(temp不能小于0且不能為奇數(shù))??
  • ????int?temp?=?t-cnt?-?abs(si-di)?-?abs(sj-dj);??
  • ????if(temp<0?||?temp%2)?return;??
  • ????//DFS遍歷??
  • ????for(int?i?=?0;?i?<?4;?i++)?if(map[si+dir[i][0]][sj+dir[i][1]]?!=?'X')??
  • ????{??
  • ????????map[si+dir[i][0]][sj+dir[i][1]]?=?'X';??????//將走過的地方設(shè)為墻壁??
  • ????????dfs(si+dir[i][0],?sj+dir[i][1],?di,?dj,?cnt+1);??
  • ????????if(escape)?return;??????????????//當(dāng)找到出口時(shí),返回即可??
  • ????????map[si+dir[i][0]][sj+dir[i][1]]?=?'.';??????//回退,恢復(fù)為可走點(diǎn)??
  • ????}??
  • ????return;??
  • }??
  • ??
  • int?main()??
  • {??
  • ????int?si,?sj;?????//小狗所在位置??
  • ????int?di,?dj;?????//出口所在位置??
  • ????while(scanf("%d%d%d",?&n,?&m,?&t))??//輸入迷宮的長(zhǎng)n、寬m、及出口處門開的時(shí)刻t??
  • ????{??
  • ????????int?wall?=?0;???//墻壁的數(shù)量,便于剪枝??
  • ????????getchar();??//屏蔽scanf后的轉(zhuǎn)行符的影響??
  • ????????if(n?==?0?&&?m?==?0?&&?t?==?0)?break;???//當(dāng)輸入"0?0?0"時(shí)結(jié)束??
  • ????????//確定小狗坐標(biāo)、出口坐標(biāo)、墻壁的數(shù)量??
  • ????????for(int?i?=?1;?i?<=?n;?i++)??
  • ????????{??
  • ????????????for(int?j?=?1;?j?<=?m;?j++)??
  • ????????????{??
  • ????????????????scanf("%c",?&map[i][j]);??
  • ????????????????if(map[i][j]?==?'S')?{?si?=?i;?sj?=?j;?}??
  • ????????????????else?if(map[i][j]?==?'D')?{?di?=?i;?dj?=?j;?}??
  • ????????????????else?if(map[i][j]?==?'X')?wall++;??
  • ????????????}??
  • ????????????getchar();??//作用同上??
  • ????????}?????
  • ??????????
  • ????????if(n*m?<=?t+wall)?{?printf("NO\n");?continue;?}??//剪枝??
  • ??
  • ????????escape?=?0;??
  • ????????map[si][sj]?=?'X';??
  • ??????
  • ????????dfs(si,?sj,?di,?dj,?0);??
  • ??????
  • ????????if(escape)?printf("YES\n");???????
  • ????????else?printf("NO\n");??
  • ????}??
  • ????return?0;??
  • }??
  • 運(yùn)行結(jié)果:

    Ps:如有bug,歡迎拍磚~

    總結(jié)

    以上是生活随笔為你收集整理的实现DFS之“骨头的诱惑”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 在线天堂在线 | 小妹色播 | 成人一级视频 | 亚洲精品一级 | 亚洲欧美另类在线 | 男男play呻吟动漫网站 | 中文字幕天堂在线 | 深夜福利一区二区三区 | 人妻少妇一区二区 | 粗大的内捧猛烈进出在线视频 | 国产午夜片| 日少妇视频 | 亚洲成人1区 | 免费观看污视频 | 日韩黄色网页 | www.超碰在线.com| 亚洲天堂久久久久 | 亚洲日本免费 | 精品久久福利 | 好吊色在线观看 | 免费日本黄色片 | 熟女一区二区三区视频 | 久久国产精品一区二区 | 涩涩网站在线看 | 美女考逼| 成人看的视频 | 亚洲精品久久夜色撩人男男小说 | 国产在线欧美 | 精品黑人一区二区三区 | 久久久久久伊人 | 春宵av| 国产嫩草影院久久久久 | 成年人视频在线观看免费 | 亚洲国内自拍 | 综合在线一区 | 一级成人毛片 | av啊啊 | 中文字幕你懂的 | 亚洲欧美成人一区二区三区 | 久久久久国产精品熟女影院 | 日日干日日射 | 久久午夜伦理 | 福利视频99 | 成人免费看aa片 | 亚洲免费黄网 | 欧美影院在线 | 99热一区二区 | 久久一区国产 | 成av人在线 | 欧美激情三区 | 亚洲色图制服丝袜 | 久草视频福利 | www.成人精品 | 综合免费视频 | 公侵犯一区二区三区 | 精品国产鲁一鲁一区二区张丽 | 国产一区欧美二区 | 色爽| 国产黄色片网站 | 国产精品丝袜视频无码一区69 | 免费网站在线高清观看 | 性生生活大片又黄又 | 超碰免费97 | 亚洲国产成人精品久久久 | 免费毛片小视频 | 乌克兰极品av女神 | 人人澡人人爽 | 上海毛片 | 一道本一区二区 | 丁香婷婷深情五月亚洲 | 国产欧美日韩三区 | 午夜秋霞 | 国产精品女同 | 久久老司机精品视频 | 国精品无码一区二区三区 | 欧美永久精品 | 麻豆视频精品 | 天天想你在线观看完整版电影免费 | 啪啪自拍视频 | 天天av天天爽 | 中文字幕精品久久久 | 欧美日韩国产一级片 | 污在线观看 | 欧美色图亚洲天堂 | 日韩成人av一区 | 色噜| 日韩精品人妻一区二区中文字幕 | 插插插网站 | 国产精品成 | 精品无码一区二区三区爱欲 | 久久视频免费在线观看 | 中文字幕有码在线观看 | av网天堂 | 亚洲色图吧 | 永久久久久久 | 99re国产在线| 99爱视频 | 国产三级国产精品 | 中文字幕日韩欧美在线 |