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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

杭电1010java实现dfs

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

題目:
問題描述
小狗在一個(gè)古老的迷宮中發(fā)現(xiàn)了一塊骨頭,這讓他著迷了很多。然而,當(dāng)他拾起它時(shí),迷宮開始動(dòng)搖,小狗可能感覺到地面下沉。他意識(shí)到骨頭是一個(gè)陷阱,他拼命地試圖走出這個(gè)迷宮。

迷宮是一個(gè)大小為N的矩形。在迷宮中有一扇門。一開始,門被關(guān)閉,并在短時(shí)間內(nèi)(不到1秒)在第T秒打開。因此小狗不得不在第T秒鐘到達(dá)門口。每一秒,他都可以將一個(gè)街區(qū)移到上,下,左,右相鄰街區(qū)之一。一旦他進(jìn)入一個(gè)街區(qū),這個(gè)街區(qū)的地面就會(huì)開始沉沒,并在下一秒消失。他不能在一個(gè)街區(qū)停留超過一秒鐘,也不能進(jìn)入訪問區(qū)塊。這只可憐的小狗能生存嗎?請幫助他。
輸入
輸入由多個(gè)測試用例組成。每個(gè)測試用例的第一行包含三個(gè)整數(shù)N,M和T(范圍打出來后面會(huì)顯示不出來)分別表示迷宮的大小和門打開的時(shí)間。接下來的N行給出迷宮布局,每行包含M個(gè)字符。一個(gè)字符是以下之一:
‘X’:小狗不能進(jìn)入的一堵墻;
‘S’:小狗的起點(diǎn);
‘D’:門;要么
‘?!?#xff1a;空白塊。
輸入以三個(gè)0結(jié)束。這個(gè)測試用例不被處理。
產(chǎn)量
對于每個(gè)測試案例,如果小狗能夠存活,則在一行中打印“是”,否則打印“否”。
示例輸入
4 4 5
S.X.
…X.
…XD

3 4 5
S.X.
…X.
… d
0 0 0
示例輸出
NO
YES
這是我第一個(gè)做的深搜題,講一下我做這題的錯(cuò)誤和進(jìn)步過程
1:我最初只使用普通的搜索題,利用遞歸回溯可以找到結(jié)果。但是超時(shí)
2:看了網(wǎng)上的分析之后,才明白要剪枝,就是把不可能的情況減掉,我看了別人的剪枝,才知道原來兩個(gè)點(diǎn)的奇偶性和走的步數(shù)的奇偶密切相關(guān),即:偶數(shù)點(diǎn)到偶數(shù)點(diǎn)(坐標(biāo)xy之和)需要走偶數(shù)次,奇數(shù)到奇數(shù)也要走偶數(shù)次。說明兩點(diǎn)%2的結(jié)果如果相同就會(huì)走偶數(shù)次。相反則走奇數(shù)次,經(jīng)過優(yōu)化后if((x1 y1 x2 y2)%2 t%2==1) {return;}除了主要的這個(gè),還想到了步數(shù)能不能到達(dá),步數(shù)會(huì)不會(huì)超過所有路的問題。
3:發(fā)現(xiàn)還是超時(shí),后來才想明白需要走一步剪枝規(guī)范去掉沒用的,這樣減少的次數(shù)是不僅僅初始的那個(gè)狀態(tài)。這樣優(yōu)化后理論上可以ac
4:但是我依然超時(shí),做了很多嘗試,發(fā)現(xiàn)我的dfs函數(shù)的參數(shù)過多,我把他寫在外面靜態(tài)區(qū)域,就成功ac了。可以看代碼
代碼如下:(被注釋部分代碼就是超時(shí)而沒法過的最初形式)

import java.util.Scanner; public class Main {static int d[][]= {{-1,0},{0,-1},{1,0},{0,1}};//上左下右static boolean judgle=false;static int n,m,t,x2,y2;public static void main(String[] args) { Scanner sc=new Scanner(System.in);while(sc.hasNext()){n=sc.nextInt();//行數(shù)m=sc.nextInt();//列數(shù)t=sc.nextInt();//門打開的時(shí)間sc.nextLine();if(n==0&&m==0&&t==0)break;char a[][]=new char[n][m];boolean b[][]=new boolean[n][m];//判斷是否有障礙boolean c[][]=new boolean[n][m];//走過記錄int x1=0,y1=0;for(int i=0;i<n;i++)//賦值{String exa=sc.nextLine(); a[i]=exa.toCharArray();}for(int i=0;i<n;i++)//賦值{for(int j=0;j<m;j++)//賦值{if(a[i][j]=='X') {b[i][j]=true;}//有障礙else if(a[i][j]=='S') {x1=i;y1=j;}//起點(diǎn)else if(a[i][j]=='D') {x2=i;y2=j;}//結(jié)束點(diǎn)}}c[x1][y1]=true;// if((x1+y1+x2+y2)%2+t%2==1) {judgle=false;} if(t>=m*n) {judgle=false;}//時(shí)間超了// else if(t<Math.abs(y1-y2)+Math.abs(x2-x1)) {judgle=false;} // else {dfs(b,c,x1,y1);}if(judgle) {System.out.println("YES");judgle=false;}else{System.out.println("NO");}} }//private static void dfs( boolean[][] b,boolean c[][], int x1, int y1, int x2, int y2,int m,int n,int t) {private static void dfs( boolean b[][], boolean c[][], int x1, int y1) { if(t==0) {if(x1==x2&&y1==y2)judgle=true;return;} //到達(dá)終點(diǎn)else if((x1+y1+x2+y2)%2+t%2==1) {return;} else if(t<Math.abs(y1-y2)+Math.abs(x2-x1)) {return;}else{for(int i=0;i<4;i++){int x=x1,y=y1;if(x1+d[i][1]<0||y1+d[i][0]<0||x1+d[i][1]>=n||y1+d[i][0]>=m){continue;}//不越界else{if(!b[x1+d[i][1]][y1+d[i][0]]&&!c[x1+d[i][1]][y1+d[i][0]]) //you障礙 { x=x+d[i][1];y=y+d[i][0];t--;c[x][y]=true; if(t==0&&x==x2&&y==y2) {judgle=true;break;} dfs(b,c,x,y); c[x][y]=false;t++; } } }} } }

不知道還有什么優(yōu)化的方法,希望大佬能過指出!
微信公眾號:bigsai,期待您的關(guān)注!

總結(jié)

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

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

主站蜘蛛池模板: 亚洲区久久| 又黄又免费的视频 | 欧美夜夜 | 国产一级一片免费播放放a 丁香六月色 | 欧美在线视频免费播放 | 久久精品一本 | 国产香蕉尹人视频在线 | 成人午夜视频免费看 | 欧美激情国产日韩精品一区18 | 人妻饥渴偷公乱中文字幕 | 亚洲第二页 | 99re99| 无码人妻精品一区二区50 | 欧美日韩精品二区 | 亚洲国产网站 | 一区二区三区视频 | 国产自在线 | 在线免费看mv的网站入口 | 日韩中文字幕av电影 | 亚洲精品久久 | 国产精品视频免费在线观看 | 在线观看的网站 | 欧美精品一二三四区 | 加勒比av在线播放 | 一卡二卡三卡在线观看 | 三级av在线免费观看 | 中文字幕在线观看一区二区三区 | 日韩性av | www日本在线| 亚洲成人av综合 | 一区二区三区四区亚洲 | 成人18在线| 北条麻妃一区二区三区 | 99精品视频在线观看免费 | 天天干夜夜添 | 国产精品入口夜色视频大尺度 | 美丽的小蜜桃2:美丽人生 | 人妻久久一区二区三区 | 国产欧洲亚洲 | 草av在线 | 五月天婷婷久久 | 男人插女人免费视频 | 国产在线网站 | 亚欧洲精品在线视频 | 黑人巨大精品人妻一区二区 | 午夜影剧院 | 国产一级影院 | 亚洲第三色 | 在线毛片网站 | 91香蕉视频在线观看免费 | 99久久影视 | 极品少妇xxxx精品少妇 | 天天做天天爱天天爽综合网 | 国产suv精品一区二区6 | 思思久久99| 欧美久久久影院 | 天天干天天摸天天操 | 亚洲色图88| 少妇流白浆 | 欧美另类精品xxxx孕妇 | 精品黑人一区二区三区国语馆 | 艹少妇视频 | 精品999久久久一级毛片 | 亚洲精品女人久久久 | 香蕉色视频 | 国产理论在线观看 | 性色网站 | 神马午夜一区 | 亚洲色精品三区二区一区 | 国产白丝精品91爽爽久久 | 欧美成人高潮一二区在线看 | 伊人99在线 | 一区二区三区精品在线 | 日本成人在线视频网站 | 第一av| 亚洲精品伦理 | 日韩h视频| 性生交大片免费看狂欲 | 艳妇乳肉豪妇荡乳av无码福利 | 国产乱人伦精品 | 福利免费观看 | 性久久久久久久 | 国产成人精品二区三区亚瑟 | 国产毛片毛片毛片毛片毛片 | 国产xxx69麻豆国语对白 | 成年人免费黄色片 | 国产精品扒开腿做爽爽 | 少妇偷人精品无码人妻 | 久久国产乱子伦精品 | 三区在线 | 亚洲精品国产精品国 | 东京久久久 | 东方成人av| 国产一区二区在线精品 | 中文字幕免费在线 | 骚虎视频在线观看 | 少妇乱淫36部 | 国产粉嫩在线观看 | 黄色片成年人 |