1. 程式人生 > >走出迷宮

走出迷宮

描述

當你站在一個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。 
假設你已經得到了一個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。

輸入 第一行是兩個整數n和m(1<=n,m<=100),表示迷宮的行數和列數。
接下來n行,每行一個長為m的字串,表示整個迷宮的佈局。字元'.'表示空地,'#'表示牆,'S'表示起點,'T'表示出口。 輸出

輸出從起點到出口最少需要走的步數。

程式:

#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[110][110];
struct data{
int x,y;
}t,s;
queue<data>q;
int xx[4]={1,0,-1,0},yy[4]={0,1,0,-1};
bool bo[110][110];
int dis[110][110]={0};
int main()
{
memset(bo,false,sizeof(bo));
cin>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
cin>>a[i][j];
if(a[i][j]=='S')
{s.x=i;s.y=j;};
if(a[i][j]=='T')
{t.x=i;t.y=j;};
}
q.push(s);
bo[s.x][s.y]=true;
while(!q.empty())
{
data k=q.front();
q.pop();
for(int i=0;i<4;++i)
{
data l=k;
l.x+=xx[i];l.y+=yy[i];
if(l.x<1||l.x>n||l.y<1||l.y>m||a[l.x][l.y]=='#'||bo[l.x][l.y])
continue;
bo[l.x][l.y]=true;
dis[l.x][l.y]=dis[l.x-xx[i]][l.y-yy[i]]+1;
q.push(l);
}
}
cout<<dis[t.x][t.y];
}

相關推薦

廣度優先演算法迷宮

廣度優先演算法(Breadth-First Search),同廣度優先搜尋,又稱作寬度優先搜尋,或橫向優先搜尋,簡稱BFS,是一種圖形搜尋演演算法。簡單的說,BFS是從根節點開始,沿著樹的寬度遍歷樹的節點,如果發現目標,則演算終止。廣度優先搜尋的實現一般採用open-closed表。 有這麼一個迷宮: 6

迷宮

描述 當你站在一個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。  假設你已經得到了一個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。 輸入 第一行是兩個整數n和m(1<=n,m<=100),表示迷宮的

迷宮小遊戲的實現

#include <stdio.h> #define rows 6 #define cols 8 //全域性變數儲存地圖 char map[rows][cols] = { {'#',' ','#','#','#','#','#','#'}, {'#','O','#','#','

深度優先搜尋:能否迷宮

題目 一個m×n的迷宮裡有很多鐳射,用其起點和終點座標(x1,y1,x2,y2)來表示。有鐳射的地方不能通過。當起點為(0,0),終點為(m,n),且移動只能為上下左右各一個單位,問能否從起點到達終點。輸入包括m和n,接著是鐳射的個數,每個鐳射的使用4個座標表

NOI題庫2.5 6264 迷宮

描述 當你站在一個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。 假設你已經得到了一個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。 輸入

自動尋找迷宮的最短路徑

演算法心得:1.利用廣度優先遍歷(bfs)實現尋找最短路徑2.利用樹的思想,將每走一步的終點與它的起點相連線,這樣就能在最後把整條最短路徑找出來#include<stdio.h> #include<stdlib.h> #include<time.

迷宮(C程式設計進階第9周)

問題描述 當你站在一個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。 假設你已經得到了一個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。 輸入

java 藍橋杯 迷宮

給一個 n 行 m 列的 2 維的迷宮,'S'表示迷宮額起點,'T'表示迷宮的終點,'#'表示不能通過的點,'.' 表示可以通過的點。你需要從'S'出發走到'T',每次只能上下左右走動,並且只能進入能

1254:迷宮

style 最短 set 保存 遍歷 ring nbsp cst -s 背景:眾所周知,這道題還是個迷宮板子。。。。。 原理:廣搜,檢索路徑,將走過的和墻所在區域置為0,其他區域置為1(可以走)。那麽,用隊列存一下路徑,搜索每深一層,步數++,然後後退時步數再-回去就行了

MFC視窗子類化的迷宮

CWnd::CreateàCWnd::CreateExàAfxHookWindowCreate(this)à_AfxCbtFilterHook。在鉤子函式_AfxCbtFilterHook中,將已建立的視窗(HWND)附加到當前正在初始化的CWnd(CEdit)物件(_AFX_THREAD_STATE::m_

混網管理迷宮

為了加強網路管理,許多網路運維團隊不得不面臨的一個主要挑戰,那就是使用的監控管理工具越來越多了。在混合網路中,管理工具過於分散的問題實際上要比很多人意識到的要嚴重。根據企業管理聯合會(Enterprise Management Associates)兩年一次的網路管理調研發現,幾乎一半的網路專業人員使用4

#51CTO學院四周年# 感謝51CTO學院讓我迷茫

項目經驗 程序員 架構師 it教師 信息教育   我是一個女程序媛,目前是一個公司的技術架構師,寫著項目核心代碼,同時管理著一個不大不小的開發團隊,做項目的確很累,特別是對於女性同胞們來講。但是生活就是這麽回事,為了不讓IT狂潮把自己給淹沒了,必須奮勇向前,偶然身體受傷了,貼個妥妥貼,為自

軟件作坊pdf

blog 軟件開發 margin rda 主管 以及 組織 項目管理 file 下載地址:網盤下載 圖書簡介:本書提供了解決國內小型IT企業發展的過程中會遇到的項目管理問題的若幹方法。本書形式活潑,內容獨特,主要以作者自身多年工作的寶貴經驗,來談軟件公司的項目管理和團隊建

12招焦躁 天搜集團發布青年降躁秘方集

天搜集團互聯網時代,世界瞬息萬變,壓力也隨之而來。年輕人被買房焦慮、手機焦慮、閱讀焦慮、戀愛焦慮、時間焦慮等各種問題困擾著,但他們大多數在面對自身焦躁情緒時往往束手無策。近日豆瓣上一則“敢不敢就這樣和自己獨處”的帖子引起網友廣泛關註,帖子中列舉了十幾種緩解焦躁情緒的“秘方”:對著鏡子練習各種笑、剪掉多余的信用

伴我沙漠的夥伴--51cto

心得 天津是一個不大不小的城市,雖然是直轄市,但是受各種因素的影響,IT行業一直發展的很緩慢,也導致了IT培訓的缺乏,新知識傳播的速度非常緩慢,那些大牛早就乘著互聯網的風飛向了北上廣深,留下我們這群無知的少年望洋興嘆。有走出去的膽量,卻沒有足夠的知識。 我就是這群少年中的一員。08年從一般本科

軟件作坊》

line 聯盟 職位 聯網 互聯 京東 用友 簡介 -c 三五個人,十來條槍,怎麽艱難突圍,一步步做大 簡介 待補充 簡介 作者呂建偉(@阿朱),研發管理專家,原京東技術學院院長,中國互聯網技術聯盟發起人,歷任首席架構師、技術總監以及CTO等職位。目前已接

迷茫

參考 做事 青年 實現 特征 心理 選擇 教育 有意義 (整理自 網易雲課堂、騰訊課堂、淘寶教育,楊奎修迷茫解決方案)迷茫,是一個階段進入下一個階段的過渡過程,不了解情況、不知如何選擇、如何行動,就會感到困惑。最常見的群體是職業適應期的青年人。迷茫者一般有以下一些表現:不清

圖論--泥潭

sin namespace amp nod name pac 之間 cst ems 題目描述: 探險隊要穿越泥潭,必須選擇可踩踏的落腳點。可是泥潭面積很大,落腳點又實在少得可憐,一不小心就會深陷泥潭而無法脫身。偵查員費盡周折才從老鄉手裏弄到了一份地圖,圖中標出了落腳點的

人工智慧、機器學習和神經網路計算棒試驗室的應用場景

跟著“人工智慧”走出試驗室、逐步有了實踐的應用場景,它成為了一項可能在不久的將來徹底改動人類社會的根底技能,也成為了很多人最愛評論的論題。可是,AI(人工智慧)、機器學習、神經網路計算棒,這些詞看著潮,究竟是指什麼呢? 別慌,咱們試著舉幾個簡略的比方來解釋一下。 人工智慧 “科技

如何區塊連遊戲改造第一步?

cto 相對 發現 公開 而且 加密狗 全部 col 成本 前段時間,在美國矽谷的區塊鏈峰會中,當Ripple執行董事Chris Larsen被問起2020年以前,區塊鏈最好的應用領域會在哪裏的時候,他只回答了一個方向,那就是區塊鏈加遊戲的結合。      Ripple執行