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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

杭电oj1072java实现bfs

發(fā)布時(shí)間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 杭电oj1072java实现bfs 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Nightmare
問(wèn)題描述
伊格內(nèi)修斯昨晚有一場(chǎng)噩夢(mèng)。他發(fā)現(xiàn)自己身陷迷宮,身上有一枚定時(shí)炸彈。迷宮有一個(gè)出口,在炸彈爆炸之前,伊格內(nèi)修斯應(yīng)該走出迷宮。炸彈的最初爆炸時(shí)間設(shè)定為6分鐘。為了防止炸彈爆炸,伊格內(nèi)修斯必須緩慢移動(dòng),即從一個(gè)區(qū)域移動(dòng)到最近的區(qū)域(也就是說(shuō),如果Ignatius現(xiàn)在站在(x,y)上,他只能在(x 1, y),(x-1,y),(x,y 1)或(x,y-1))在1分鐘內(nèi)。迷宮中的某個(gè)區(qū)域包含一個(gè)炸彈重置設(shè)備。他們可以將爆炸時(shí)間重置為6分鐘。

鑒于迷宮布局和伊格內(nèi)修斯的起始位置,請(qǐng)告訴伊格納修斯他是否可以走出迷宮,如果可以的話,輸出他必須用來(lái)尋找迷宮出口的最短時(shí)間,否則輸出-1。

以下是一些規(guī)則:
我們可以假設(shè)迷宮是2陣列。
2.每分鐘,伊格內(nèi)修斯都只能到最近的一個(gè)地方,他不應(yīng)該走出邊界,當(dāng)然他也不能在墻上行走。
3.如果伊格內(nèi)修斯在爆炸時(shí)間變?yōu)?時(shí)到達(dá)出口處,他就無(wú)法離開(kāi)迷宮。
4.如果伊格內(nèi)修斯在爆炸時(shí)間變?yōu)?時(shí)到達(dá)包含炸彈休息裝備的區(qū)域,他不能使用該裝備重置炸彈。
5.炸彈重置設(shè)備可以根據(jù)需要多次使用,如果需要的話,伊格內(nèi)修斯可以根據(jù)需要多次進(jìn)入迷宮中的任何區(qū)域。
6.重置爆炸時(shí)間的時(shí)間可以忽略,換句話說(shuō),如果伊格內(nèi)修斯到達(dá)包含炸彈休息裝備的區(qū)域,并且爆炸時(shí)間大于0,則爆炸時(shí)間將重置為6。

輸入
輸入包含多個(gè)測(cè)試用例。輸入的第一行是單個(gè)整數(shù)T,它是測(cè)試用例的數(shù)量。 T測(cè)試用例如下。
每個(gè)測(cè)試用例都以兩個(gè)表示迷宮大小的整數(shù)N和M(1 <= N,Mm = 8)開(kāi)始。然后N行,每行包含M個(gè)整數(shù)。該數(shù)組表示迷宮的布局。
有五個(gè)整數(shù)表示迷宮中不同類型的區(qū)域:
0:該地區(qū)是一堵墻,伊格內(nèi)修斯不應(yīng)該走上它。
1:該地區(qū)沒(méi)有任何東西,伊格內(nèi)修斯可以在其上行走。
2:伊格內(nèi)修斯的起跑位置,伊格內(nèi)修斯開(kāi)始逃離這個(gè)位置。
3:迷宮的出口,依納爵的目標(biāo)位置。
4:該區(qū)域包含一個(gè)炸彈重置設(shè)備,Ignatius可以通過(guò)步行到這些區(qū)域來(lái)延遲爆炸時(shí)間。

產(chǎn)量
對(duì)于每個(gè)測(cè)試案例,如果Ignatius可以走出迷宮,那么你應(yīng)該輸出他需要的最短時(shí)間,否則你應(yīng)該輸出-1。

示例輸入
3
3 3
2 1 1
1 1 0
1 1 3
4 8
2 1 1 0 1 1 1 0
1 0 4 1 1 0 4 1
1 0 0 0 0 0 0 1
1 1 1 4 1 1 1 3
5 8
1 2 1 1 1 1 1 4
1 0 0 0 1 0 0 1
1 4 1 0 1 1 0 1
1 0 0 0 0 3 0 1
1 1 4 1 1 1 1 1

示例輸出
4
-1
13
要求找到最小的走路次數(shù)值,并且用深搜無(wú)法剪枝,顯然是一道寬搜題。有一些注意點(diǎn):
1:普通的位置可以走多次,不需要標(biāo)記,因?yàn)橛锌赡芫蜑榱巳コ灾刂谜◤椀难b置就再某個(gè)邊角地方進(jìn)去一下出來(lái)一下。
2:重置的點(diǎn)需要標(biāo)記,因?yàn)橹刂玫狞c(diǎn)走過(guò)一次就夠了,因?yàn)榈谝淮沃刂迷擖c(diǎn)的總步數(shù)一定是最小的。
3:要用優(yōu)先隊(duì)列優(yōu)化,先出步數(shù)最少的那個(gè)點(diǎn),找到滿足條件的值就立馬break;因?yàn)閮?yōu)先隊(duì)列先彈出的是步數(shù)最小的那個(gè)點(diǎn),后面再?gòu)棾黾词節(jié)M足條件步數(shù)一定大于該點(diǎn)。
附上代碼:

import java.util.Comparator; import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; /** 寬搜,優(yōu)先隊(duì)列優(yōu)化*/ public class 杭電1072bfs {static int n,m,x1=0,y1=0,x2,y2,min;//行 列 初始點(diǎn) 結(jié)束點(diǎn) 結(jié)果static int d[][]= {{1,0},{0,-1},{-1,0},{0,1}};//上左下右 public static void main(String[] args) {Scanner sc =new Scanner(System.in); int T=sc.nextInt();//測(cè)試用例 while(T-->0){min=64; //看清范圍,這個(gè)是極限 n=sc.nextInt();m=sc.nextInt();//行 列int a[][]=new int[n][m]; //儲(chǔ)存數(shù)據(jù) for(int i=0;i q1=new PriorityQueue<>(valuecompare);//優(yōu)先隊(duì)列 q1.add(new node(x1,y1,0,6));while(!q1.isEmpty()){ node exa=q1.poll();//返回頭節(jié)點(diǎn)并刪除 int x=exa.x,y=exa.y;if(exa.x==x2&&exa.y==y2) {if(exa.time>0&&min>exa.value) {min=exa.value;}}else if(exa.time==0) {;}elsefor(int i=0;i<4;i ){if(x d[i][1]<0||y d[i][0]<0||x d[i][1]>=n||y d[i][0]>=m){continue;}//不越界else{if(a[x d[i][1]][y d[i][0]]==1) //普通路徑{ q1.add(new node(x d[i][1],y d[i][0],exa.value 1,exa.time-1)); } else if(a[x d[i][1]][y d[i][0]]==4)//重置區(qū){ if(exa.time==1) {}else{q1.add(new node(x d[i][1],y d[i][0],exa.value 1,6)); a[x d[i][1]][y d[i][0]]=0;}}else if((a[x d[i][1]][y d[i][0]]==3))//結(jié)果區(qū),讓再循環(huán)外判斷{ q1.add(new node(x d[i][1],y d[i][0],exa.value 1,exa.time-1));;} }}} }public static Comparator valuecompare =new Comparator()//接口{@Overridepublic int compare(node arg0, node arg1) { return (int)(arg0.value-arg1.value);} }; } class node//點(diǎn) {int x;int y;int value;int time;public node(int x,int y,int value,int time){this.x=x;this.y=y;this.value=value;this.time=time;} }

總結(jié)

以上是生活随笔為你收集整理的杭电oj1072java实现bfs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 男女午夜网站 | 女人脱下裤子让男人捅 | 日韩av综合在线 | 孕妇疯狂做爰xxxⅹ 国产精品乱码久久久久久 99久久久成人国产精品 | 狠狠躁天天躁夜夜躁婷婷 | 长腿校花无力呻吟娇喘的视频 | 午夜丰满寂寞少妇精品 | 久草国产精品视频 | 97超碰免费在线 | 亚洲欧美变态另类丝袜第一区 | 亚洲午夜精品一区二区 | 日本r级电影在线观看 | 国精产品一二三区精华液 | 日韩有码在线播放 | av动态 | 亚洲精品一区二区三区四区乱码 | 韩国色网 | 午夜在线视频观看 | 啪视频网站 | 国产精品第5页 | 亚洲xx站 | 免费在线看污片 | 91操操| 人妻丰满熟妇岳av无码区hd | 亚州国产 | 亚日韩一区| 97av在线视频 | 性欧美丰满熟妇xxxx性久久久 | 国产精品va | 男女日批免费视频 | 国产香蕉97碰碰碰视频在线观看 | 深夜福利视频在线 | 亚洲福利社| 18av视频 | 涩色网| 伊人青青久 | 国产综合av | 97免费视频观看 | 国产精品电影网 | 亚洲无av在线中文字幕 | 欧美精品在线一区二区三区 | 嫩草视频在线播放 | 人妻互换 综合 | 精品久久香蕉国产线看观看亚洲 | 不卡视频一区二区三区 | 久久久电影 | 国产操女人| 国产91一区在线精品 | 成人mv| youjizz.com国产| 国产精品探花视频 | 性——交——性——乱免费的 | 少妇一级淫免费播放 | 欧美一区二区区 | 亚洲精品1区2区 | 影音先锋男人的天堂 | 91网站永久免费看nba视频 | 青娱乐在线免费视频 | 欧美xxxx免费虐 | 一区二区在线观看av | 黄色一级大片免费版 | 在线视频这里只有精品 | 91精品国产乱码在线观看 | 欧美特级黄| 亚洲成人精品网 | 亚洲片国产一区一级在线观看 | 精品国产乱码久久久久久影片 | 久久入口 | av永久免费在线观看 | 日韩在线不卡视频 | 大乳护士喂奶hd | 欧美无砖砖区免费 | 国产精品久久久久久69 | 亚洲精品一二三四区 | 欧美极品少妇xxxxⅹ猛交 | 亚洲天天综合 | 久久久777| 欧美久久久久久 | 日韩a级片在线观看 | 色一区二区三区 | 中文字幕亚洲乱码熟女一区二区 | 中文字字幕在线中文乱码电影 | 丝袜诱惑一区 | 国产色视频| 精品国产乱码久久久久久108 | 久久免费一级片 | www.国产在线 | 黄色一级片免费在线观看 | 香蕉视频在线观看网站 | 亚洲精品无码久久 | 综合亚洲视频 | 免费古装一级淫片潘金莲 | 日韩一区二区三区精品 | 在线艹| 亚洲在线日韩 | 国产在线第二页 | 东方欧美色图 | 粉嫩av四季av绯色av | 小sao货水好多真紧h无码视频 |