HDU 1253 勝利大逃亡 題解

勝利大逃亡

Time Limit: 4000/2000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 44540????Accepted Submission(s): 15483

Problem Description
Ignatius被魔王抓走了,有一天魔王出差去了,這可是Ignatius逃亡的好機會.

魔王住在一個城堡里,城堡是一個A*B*C的立方體,可以被表示成A個B*C的矩陣,剛開始Ignatius被關在(0,0,0)的位置,離開城堡的門在(A-1,B-1,C-1)的位置,現在知道魔王將在T分鐘后回到城堡,Ignatius每分鐘能從一個坐標走到相鄰的六個坐標中的其中一個.現在給你城堡的地圖,請你計算出Ignatius能否在魔王回來前離開城堡(只要走到出口就算離開城堡,如果走到出口的時候魔王剛好回來也算逃亡成功),如果可以請輸出需要多少分鐘才能離開,如果不能則輸出-1.

?


Input
輸入數據的第一行是一個正整數K,表明測試數據的數量.每組測試數據的第一行是四個正整數A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它們分別代表城堡的大小和魔王回來的時間.然后是A塊輸入數據(先是第0塊,然后是第1塊,第2塊......),每塊輸入數據有B行,每行有C個正整數,代表迷宮的布局,其中0代表路,1代表墻.(如果對輸入描述不清楚,可以參考Sample Input中的迷宮描述,它表示的就是上圖中的迷宮)

特別注意:本題的測試數據非常大,請使用scanf輸入,我不能保證使用cin能不超時.在本OJ上請使用Visual C++提交.
?


Output
對于每組測試數據,如果Ignatius能夠在魔王回來前離開城堡,那么請輸出他最少需要多少分鐘,否則輸出-1.
?


Sample Input
1 3 3 4 20 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0
?


Sample Output
11
?


Author
Ignatius.L
?


Recommend
Ignatius.L???|???We have carefully selected several similar problems for you:??1072?1240?1016?1010?1175?
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
同樣這是一道很典型的BFS的題目
只是由二維變成了三維
方向變為六個自由度
下面直接上我完整注釋
誰都能看懂的代碼
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1 #include<iostream>
 2 #include<string>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<fstream>
 6 #include<iosfwd>
 7 #include<sstream>
 8 #include<fstream>
 9 #include<cwchar>
10 #include<iomanip>
11 #include<ostream>
12 #include<vector>
13 #include<cstdlib>
14 #include<queue>
15 #include<set>
16 #include<ctime>
17 #include<algorithm>
18 #include<complex>
19 #include<cmath>
20 #include<valarray>
21 #include<bitset>
22 #include<iterator>
23 #define ll long long
24 using namespace std;
25 const double clf=1e-8;
26 //const double e=2.718281828;
27 const double PI=3.141592653589793;
28 const int MMAX=2147483647;
29 //priority_queue<int>p;
30 //priority_queue<int,vector<int>,greater<int> >pq;]
31 int times,a,b,c,k;
32 struct node
33 {
34     int x,y,z,step;
35 };
36 int vis[51][51][51];
37 int dir[6][3]={{0,0,1},{0,0,-1},{0,-1,0},{0,1,0},{1,0,0},{-1,0,0}};//六個自由度的矢量 
38 int bfs(int x,int y,int z,int x1,int x2,int x3)
39 {
40     int i;
41     queue<node> q;
42     q.push(node{x,y,z,0});
43     vis[x][y][z]=1; 
44     while(!q.empty())
45     {
46         node t=q.front();//讀最開始的那個元素
47         q.pop();//取出來  
48         if(t.step>times)
49             return -1;//到不了返回-1 
50         if(t.x==a-1&&t.y==b-1&&t.z==c-1&&t.step<=times)
51             return t.step;//到了直接返回步數 
52         for(i=0;i<6;i++)//6個維度 
53         {
54             int dx=t.x+dir[i][0];//x方向動 
55             int dy=t.y+dir[i][1];//y方向動 
56             int dz=t.z+dir[i][2];//z方向動 
57             if(dx>=0&&dy>=0&&dz>=0&&dx<=x1&&dy<=x2&&dz<=x3&&!vis[dx][dy][dz])
58             {
59                 q.push(node{dx,dy,dz,t.step+1});//搜索到的放進去 
60                 vis[dx][dy][dz]=1;
61             }
62         }
63     }
64     return -1;
65 }
66 int main()
67 {
68     scanf("%d",&k);
69     while(k--)
70     {
71         scanf("%d%d%d%d",&a,&b,&c,&times);
72         for(int i=0;i<a;i++)
73         {
74             for(int j=0;j<b;j++)
75             {
76                 for(int k=0;k<c;k++)
77                 {
78                     scanf("%d",&vis[i][j][k]);
79                 }
80             }
81         }
82         if(a==1&&b==1&&c==1)
83             printf("0\n");
84         else
85         {
86             int ans=bfs(0,0,0,a-1,b-1,c-1);//0,0,0開始a-1,b-1,c-1結尾 
87                 printf("%d\n",ans);
88         }
89     }
90     return 0;
91 }

Notes:模板題

2018-11-16  00:32:47  Author:LanceYu

轉載于:https://www.cnblogs.com/lanceyu/p/9967048.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lstm需要優化的參數_使用PyTorch手寫代碼從頭構建LSTM,更深入的理解其工作原理...

這是一個造輪子的過程&#xff0c;但是從頭構建LSTM能夠使我們對體系結構進行更加了解&#xff0c;并將我們的研究帶入下一個層次。LSTM單元是遞歸神經網絡深度學習研究領域中最有趣的結構之一&#xff1a;它不僅使模型能夠從長序列中學習&#xff0c;而且還為長、短期記憶創建…

有哪些漂亮的中國風 LOGO 設計?

提到中國風的logo&#xff0c;我覺得首先登場的應該是北京故宮博物院的logo&#xff0c;鐺&#xff01;故宮博物院的logo&#xff0c;從顏色&#xff0c;到外形&#xff0c;到元素&#xff0c;無一例外&#xff0c;充滿了中國風的味道&#xff0c;可謂是中國風中的典型。同一風…

大家放松下,仿《大腕》經典對白

仿《大腕》經典對白&#xff1a; 一定要找那最流行的框架&#xff0c; 用功能最強大編輯器&#xff0c; 做就要做最復雜的系統&#xff0c; 輕量級的絕對不行&#xff0c; 框架最簡單也得是&#xff33;&#xff30;&#xff32;&#xff29;&#xff2e;&#xff27;&…

MySQL-8.0.12源碼安裝實例

1、通過官網下載對應的版本后&#xff0c;通過FTP上傳至云服務器的/usr/local/src 目錄 2、解壓縮文件 [rootJSH-01 src]# ls mysql-boost-8.0.12.tar.gz [rootJSH-01 src]# tar zxvf mysql-boost-8.0.12.tar.gz [rootJSH-01 src]# ls mysql-8.0.12 mysql-boost-8.0.12.tar.gz…

python3常用模塊_Python3 常用模塊

一、time與datetime模塊 在Python中&#xff0c;通常有這幾種方式來表示時間&#xff1a; 時間戳(timestamp)&#xff1a;通常來說&#xff0c;時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time())”&#xff0c;返回的是float類型。 格式…

Windows下的HEAP溢出及其利用

Windows下的HEAP溢出及其利用 作者: isno 一、概述 前一段時間ASP的溢出鬧的沸沸揚揚&#xff0c;這個漏洞并不是普通的堆棧溢出&#xff0c;而是發生在HEAP中的溢出&#xff0c;這使大家重新認識到了Windows下的HEAP溢出的可利用性。其實WIN下的HEAP溢出比Linux和SOLARIS下面的…

地方政府不愿房價下跌 救市或化解房地產調控

地方政府不愿房價下跌 "救市"或化解房地產調控 2008年05月09日 07:29:38  來源&#xff1a;上海證券報 漫畫 劉道偉 由于房地產業與地方政府利益攸關&#xff0c;地方政府最不愿意看到房價下跌。中央房地產調控政策剛剛導致部分城市的房價步入調整&#xff0c;一些…

App移動端性能工具調研

使用GT的差異化場景平臺描述release版本development版本Android在Android平臺上&#xff0c;如果希望使用GT的高級功能&#xff0c;如“插樁”等&#xff0c;就必須將GT的SDK嵌入到被調測的應用的工程里&#xff0c;再配合安裝好的GT使用。支持AndroidiOS在iOS平臺上&#xff0…

UITabBar Contoller

。UITabBar中的UIViewController獲得控制權&#xff1a;在TabBar文件中添加&#xff1a;IBOutlet UITabBar *myTabBar; //在xib中連接tabBar&#xff1b;(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:      (UIViewControlle…

python3.5安裝pip_win10上python3.5.2第三方庫安裝(運用pip)

1 首先在python官網下載并安裝python。我這兒用的是python3.5.2&#xff0c;其自帶了pip。如果你選擇的版本沒有自帶pip&#xff0c;那么請查找其他的安裝教程。 2 python安裝好以后&#xff0c;我在其自帶的命令提示符窗口中輸入了pip&#xff0c;結果尷尬了&#xff0c;提示我…

C語言程序設計 練習題參考答案 第八章 文件(2)

/* 8.&#xff18;從文件ex88_1.txt中取出成績&#xff0c;排序后&#xff0c;按降序存放EX88_2.TXT中 */ #include "stdio.h" #define N 10 struct student { int num; char name[20]; int score[3]; /*不能使用float*/ float average; }; void sort(struc…

語法上的小trick

語法上的小trick 構造函數 雖然不寫構造函數也是可以的&#xff0c;但是可能會開翻車&#xff0c;所以還是寫上吧。&#xff1a; 提供三種寫法&#xff1a; ? 使用的時候只用&#xff1a; 注意&#xff0c;這里的A[i]gg(3,3,3)的“gg”不能打括號&#xff0c;否則就是強制轉換…

Ubuntu18.04如何讓桌面軟件默認root權限運行?

什么是gksu? 什么是gksu:Linxu中的gksu是系統中的su/sudo工具,如果安裝了gksu,在終端中鍵入gksu會彈出一個對話框. 安裝gksu: 在Ubuntu之前的版本中是繼承gksu工具的,但是在Ubutu18.04中并沒有集成, 在Elementary OS中連gksu的APT源都沒有. Ubuntu18.04 安裝和使用gksu: seven…

win10診斷啟動后聯網_小技巧:win10網絡共享文件夾出現錯誤無法訪問如何解決?...

win10系統共享文件夾時在資源管理器中的網絡里能夠看到所共享的文件夾&#xff0c;但在打開文件夾時卻出現 Windows無法訪問 Desktop-r8ceh55新建文件夾 請檢查名稱的拼寫。否則&#xff0c;網絡可能有問題。要嘗試識別并解決網絡問題&#xff0c;請單擊“診斷”的錯誤提示&…

兩段關于統計日期的sql語句

統計月份&#xff1a;selectleft(convert(char(10),[Article_TimeDate],102),7) as月份, count(*) as數量from[hdsource].[dbo].[article]groupbyleft(convert(char(10),[Article_TimeDate],102),7)orderby1統計年份&#xff1a; selectleft(convert(char(10),[Article_TimeDat…

apache配置文件詳解與優化

apache配置文件詳解與優化 一、總結 一句話總結&#xff1a;結合apache配置文件中的英文說明和配置詳解一起看 1、apache模塊配置用的什么標簽&#xff1f; IfModule 例如&#xff1a; <IfModule dir_module>DirectoryIndex index.html 索引文件 首頁文件&#xff08;首頁…

帆軟報表(finereport)單元格函數,OP參數

單元格模型&#xff1a;單元格數據和引用&#xff1a;數據類型、實際值與顯示值、單元格支持的操作單元格樣式&#xff1a;行高列寬、隱藏行列、自動換行、上下標、文字豎排、大文本字段分頁時斷開、標識說明、格式刷單元格Web屬性&#xff1a;web顯示、web編輯風格、控件實際值…

sklearn 安裝_sklearn-classification_report

原型sklearn.metrics.classification_report(y_true, y_pred, labelsNone, target_namesNone, sample_weightNone, digits2)參數y_true&#xff1a;1維數組或標簽指示數組/離散矩陣&#xff0c;樣本實際類別值列表y_pred&#xff1a;1維數組或標簽指示數組/離散矩陣&#xff0c…

effective c++條款11擴展——關于拷貝構造函數和賦值運算符

effective c條款11擴展——關于拷貝構造函數和賦值運算符 作者&#xff1a;馮明德重點:包含動態分配成員的類 應提供拷貝構造函數,并重載""賦值操作符。 以下討論中將用到的例子: class CExample { public: CExample(){pBufferNULL; nSize0;} ~CExample(){delete pB…

SparkSQL 之 Shuffle Join 內核原理及應用深度剖析-Spark商業源碼實戰

本套技術專欄是作者&#xff08;秦凱新&#xff09;平時工作的總結和升華&#xff0c;通過從真實商業環境抽取案例進行總結和分享&#xff0c;并給出商業應用的調優建議和集群環境容量規劃等內容&#xff0c;請持續關注本套博客。版權聲明&#xff1a;禁止轉載&#xff0c;歡迎…