亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ACM 廣搜 Hero In Maze

2019-11-11 03:31:48
字體:
來源:轉載
供稿:網友
這是Hero In Maze三道題,分別是TOJ中Hero In Maze簡單版,普通版,提高版。以下我將一一闡述。TOJ 2777 Hero In Maze簡單版

描述

500年前,Jesse是我國最卓越的劍客。他英俊瀟灑,而且機智過人^_^。

突然有一天,Jesse心愛的公主被魔王困在了一個巨大的迷宮中。Jesse聽說這個消息已經是兩天以后了,他急忙趕到迷宮,開始到處尋找公主的下落。

請你判斷他是否能救出心愛的公主。(假設有路可以通到公主那就可以找到公主)。

輸入

題目包括多組測試數據。每組測試數據以兩個整數n,m(0<n, m≤20)開頭,分別代表迷宮的長和高。緊接著有m行,n列字符,由".","*","P","S"組成。其中 "." 代表能夠行走的空地。 "*" 代表墻壁,Jesse不能從此通過。 "P" 是公主所在的位置。 "S" 是Jesse的起始位置。 Jesse只能選擇上、下、左、右任意一方向走一步。 輸入以0 0結束。

輸出

如果能救出公主輸出YES,否則輸出NO。

樣例輸入

樣例輸出

這個用深搜就可以,直接判斷能不能從S走到P即可。

#include <stdio.h>int a,b,s,k=0;char m[21][21];	int dir[4][2]={1,0,0,1,-1,0,0,-1};void dfs(int x,int y){     if(m[x][y]=='P')   k=1;	m[x][y]='*';	int i,xx,yy;   for(i=0;i<4;i++)   {   	xx=x+dir[i][0];   	yy=y+dir[i][1];   	if(xx>=0&&xx<a&&yy>=0&&yy<b&&m[xx][yy]!='*')    dfs(xx,yy);   }	}int main()//2777{	int i,j,u,w;	while(scanf("%d%d",&a,&b))	{   	    s=0;k=0;		if(a==0&&b==0)break;					for(i=0;i<a;i++)		{getchar();			for(j=0;j<b;j++)			{				scanf("%c",&m[i][j]);			   if(m[i][j]=='S')			    u=i,w=j;			}		} 		dfs(u,w);		if(k==0)		PRintf("NO/n");		else		printf("YES/n");	}}

TOJ 1005 Hero In Maze

描述

500年前,Jesse是我國最卓越的劍客。他英俊瀟灑,而且機智過人^_^。突然有一天,Jesse心愛的公主被魔王困在了一個巨大的迷宮中。Jesse聽說這個消息已經是兩天以后了,他知道公主在迷宮中還能堅持T天,他急忙趕到迷宮,開始到處尋找公主的下落。時間一點一點的過去,Jesse還是無法找到公主。最后當他找到公主的時候,美麗的公主已經死了。從此Jesse郁郁寡歡,茶飯不思,一年后追隨公主而去了。T_T500年后的今天,Jesse托夢給你,希望你幫他判斷一下當年他是否有機會在給定的時間內找到公主。他會為你提供迷宮的地圖以及所剩的時間T。請你判斷他是否能救出心愛的公主。

輸入

題目包括多組測試數據。每組測試數據以三個整數N,M,T(0<n, m≤20, t>0)開頭,分別代表迷宮的長和高,以及公主能堅持的天數。緊接著有M行,N列字符,由".","*","P","S"組成。其中"." 代表能夠行走的空地。"*" 代表墻壁,Jesse不能從此通過。"P" 是公主所在的位置。"S" 是Jesse的起始位置。每個時間段里Jesse只能選擇“上、下、左、右”任意一方向走一步。輸入以0 0 0結束。

輸出

如果能在規定時間內救出公主輸出“YES”,否則輸出“NO”。

樣例輸入

樣例輸出

題目意思與上面一致,但是這題要判斷時間,所以不能用深搜了,需要用廣搜來計算最短時間。

這是一個大佬寫的,我沒看懂...

http://blog.csdn.net/j_sure/article/details/19997869

#include <cstdio>  #include <iostream>  #include <algorithm>  #include <cstring>   #include <queue>  using namespace std;   int DTx[4]={-1,0,1,0};  int DTy[4]={0,1,0,-1};  char map[25][25];  int dp[25][25];  int x,y,X,Y;  int minn;  int n,m,t;  struct H{      int x,y;      int time;  };  int bfs(int h,int z)  {      int i,j;      queue <H> q;      H a,b,c;      a.x=h;      a.y=z;      a.time=0;      q.push(a);      while(!q.empty())      {          b=q.front();          q.pop();          if(b.x==X&&b.y==Y)              return b.time;          for(i=0;i<4;i++)          {              c.x=b.x+DTx[i];              c.y=b.y+DTy[i];              if(c.x>=0&&c.x<m&&c.y>=0&&c.y<n&&!dp[c.x][c.y])                  {                      dp[c.x][c.y]=1;                      c.time=b.time+1;                      q.push(c);                  }          }      }      return -1;  }  int main()  {      int i,j;      while(~scanf("%d%d%d",&n,&m,&t)&&(n||m||t))      {          memset(dp,0,sizeof dp);          for(i=0;i<m;i++)              cin>>map[i];          for(i=0;i<m;i++)              for(j=0;j<n;j++)              if(map[i][j]=='S')              {x=i;y=j;dp[i][j]=1;}              else if(map[i][j]=='P')              {X=i;Y=j;}              else if(map[i][j]=='*')                  dp[i][j]=1;          minn=bfs(x,y);           //printf("%d/n",minn);           if(minn<=t&&minn!=-1)          printf("YES/n");          else 	printf("NO/n");      }      return 0;  }  

TOJ 3305 Hero In Maze ||

描述

500年前,Jesse是我國最卓越的劍客。他英俊瀟灑,而且機智過人^_^。突然有一天,Jesse心愛的公主被魔王困在了一個巨大的迷宮中。Jesse聽說這個消息已經是兩天以后了,他急忙趕到迷宮,開始到處尋找公主的下落。令人頭痛的是,Jesse是個沒什么方向感的人,因此,他在行走過程中,不能轉太多彎了,否則他會暈倒的。 我們假定Jesse和公主所在的位置都是空地,初始時,Jesse所面向的方向未定,他可以選擇4個方向的任何一個出發,而不算成一次轉彎。希望你幫他判斷一下他是否有機會找到心愛的公主。 

輸入

題目包括多組測試數據.

第1行為一個整數T(1 ≤ T≤ 100),表示測試數據的個數,接下來為T組測試數據.

每組測試數據以兩個整數N,M,K(1<=N, M≤100, 0<K<=10)開頭,分別代表迷宮的高,長和Jesse最多能轉的彎數,(緊接著有N行,M列字符,由".","*","P","S"組成。其中"." 代表能夠行走的空地。 "*" 代表墻壁,Jesse不能從此通過。 "P" 是公主所在的位置。 "S" 是Jesse的起始位置。 每個時間段里Jesse只能選擇“上、下、左、右”任意一方向走一步。

輸出

如果Jesse能在暈之前找到公主,輸出“YES”,否則輸出“NO”。

樣例輸入

樣例輸出

題目意思與上一致,就是判斷條件從時間變成了轉彎次數。注意初始的一次不算轉彎。

判斷轉彎次數的話我設置了一個wan,即第一次轉的方向(i)和第二次的不一樣時,就是轉彎了。

然后我寫的廣搜TOJ沒AC,但是我感覺完美了...先放上來吧~

#include <cstdio>  #include <iostream>  #include <algorithm>  #include <cstring>  #include <cmath>  #include <queue>using namespace std;   int DTx[4]={-1,0,1,0};  int DTy[4]={0,1,0,-1};  char map[101][101];  int dp[101][101];  int x,y,X,Y;  int minn;  int n,m,t;  struct H{      int x,y;      int time,wan;  };  int bfs(int h,int z)  {      int i,j;      queue <H> q;      H a,b,c;      a.x=h;      a.y=z;      a.time=-1; 	a.wan=-1;     q.push(a);      while(!q.empty())      {          b=q.front();          q.pop();          if(b.x==X&&b.y==Y)              return b.time;          for(i=0;i<4;i++)          {              c.x=b.x+DTx[i];              c.y=b.y+DTy[i];              c.wan=i;            if(c.x>=0&&c.x<m&&c.y>=0&&c.y<n&&!dp[c.x][c.y])                  {                      dp[c.x][c.y]=1;                      if(c.wan!=b.wan)//若兩次方向一樣,則沒有轉彎。                     c.time=b.time+1; 					q.push(c);                 }          }      }      return -1;  }  int main()  {      int i,j,o;      scanf("%d",&o);    while(o--)      {  		scanf("%d%d%d",&m,&n,&t);         memset(dp,0,sizeof dp);          for(i=0;i<m;i++)              cin>>map[i];          for(i=0;i<m;i++)              for(j=0;j<n;j++)              if(map[i][j]=='S')              {x=i;y=j;dp[i][j]=1;}              else if(map[i][j]=='P')              {X=i;Y=j;}              else if(map[i][j]=='*')                  dp[i][j]=1;          minn=bfs(x,y);           //printf("%d/n",minn);           if(minn<=t&&minn!=-1)          printf("YES/n");          else 		printf("NO/n");      }      return 0;  }  

然后下面的是童冰學姐寫的深搜,簡單很多。

#include<stdio.h>int n,m,b[4][2]={{0,1},{0,-1},{1,0},{-1,0}},s,k;char a[101][101];void dfs(int x,int y,int r,int w){    if(k==1)return;    int i,x0,y0,r0;    if(x<0||y<0||x>=n||y>=m||r>s+1||a[x][y]=='*')return;    if(a[x][y]=='P')	{k=1;return;}    a[x][y]='*';    for(i=0;i<4;i++)    {        x0=x+b[i][0];        y0=y+b[i][1];        if(w!=i)        r0=r+1;        else r0=r;        dfs(x0,y0,r0,i);    }    a[x][y]='.';}int main(){    int i,j,x0,y0,t;    scanf("%d",&t);    while(t--)    {        k=0;        scanf("%d%d%d",&n,&m,&s);        for(i=0;i<n;i++)        {        	scanf("%s",a[i]);        	for(j=0;j<m;j++)        	{            	if(a[i][j]=='S')            	x0=i,y0=j;        	}		}        dfs(x0,y0,0,-1);        if(k)printf("YES/n");        else printf("NO/n");    }}   


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品一二区| 亚洲欧美另类在线观看| 日本一区二三区好的精华液| 国产91色在线|| 不卡毛片在线看| 中文字幕国产日韩| 国产精品久久久久久久久免费看| 亚洲国产精品热久久| 日韩成人av在线| 日韩视频在线免费观看| 欧美性猛交xxxx免费看| 国产欧美日韩中文字幕在线| 亚洲精品国产综合久久| 美日韩精品免费观看视频| 国产午夜精品全部视频播放| 欧美日韩国产成人在线观看| 在线观看久久久久久| 丝袜亚洲欧美日韩综合| 欧美中文字幕在线视频| 上原亚衣av一区二区三区| 精品久久久久久电影| 成人h片在线播放免费网站| 热久久美女精品天天吊色| 国产一区二区三区免费视频| 欧美日韩国产一中文字不卡| 亚洲天堂色网站| 成人在线中文字幕| 欧美激情在线一区| 国产一区二区三区在线播放免费观看| 国产精品99久久久久久www| 日韩欧美成人精品| 欧美性猛交xxxx免费看漫画| 成人网欧美在线视频| 国产亚洲美女精品久久久| 亚洲高清不卡av| 欧美一级片免费在线| 欧美日韩在线第一页| 国产精品久久久久77777| 欧美自拍视频在线| 亚洲午夜精品视频| 高清视频欧美一级| 久久亚洲精品国产亚洲老地址| 欧美日韩免费区域视频在线观看| 国产精品久久久久久久久免费看| 久久久久久久久久久久久久久久久久av| 欧美成人全部免费| 久久深夜福利免费观看| 亚洲淫片在线视频| 成人午夜在线视频一区| 国产精品自拍小视频| 国产精品成人v| 国产女人精品视频| 精品国产欧美一区二区三区成人| 亚洲成人av资源网| 亚洲欧美日韩一区在线| 国产精品久久久久久久久久久久久| 亚洲欧美日韩天堂| 亚洲美女久久久| 4438全国亚洲精品在线观看视频| 国内自拍欧美激情| 丝袜亚洲欧美日韩综合| 性欧美长视频免费观看不卡| 国产福利精品av综合导导航| 国产亚洲人成网站在线观看| 影音先锋欧美在线资源| 中文字幕在线看视频国产欧美在线看完整| 国产亚洲成av人片在线观看桃| 色综合视频一区中文字幕| 日韩人体视频一二区| 日韩中文有码在线视频| 日韩中文字幕国产精品| 日韩精品在线观看一区二区| 亚洲天堂av图片| 国产福利精品视频| 亚洲一区二区三区777| 一个人看的www久久| 精品av在线播放| 国产性色av一区二区| 国产精品成人av性教育| 国产精品免费观看在线| 日韩欧美在线观看视频| 庆余年2免费日韩剧观看大牛| 久久久久久综合网天天| 国产精品96久久久久久| 日韩在线视频线视频免费网站| 久久久久久久久综合| 国产精品一区二区久久久久| 人九九综合九九宗合| 日本国产一区二区三区| 日韩电影在线观看永久视频免费网站| 亚洲欧美另类人妖| 国产欧美一区二区三区在线| 亚洲免费av片| 一本色道久久综合狠狠躁篇的优点| 亚洲男人第一网站| 国产精品主播视频| 少妇高潮 亚洲精品| 欧美日韩中文字幕在线| 亚洲精品永久免费| 亚洲经典中文字幕| 国产精品视频自在线| 国产日韩在线视频| 精品视频偷偷看在线观看| 日韩高清有码在线| 美日韩在线视频| 欧美日韩激情美女| 国产精品成人一区| 久久久久久久久亚洲| 韩日欧美一区二区| 日本在线精品视频| 欧美性生活大片免费观看网址| 亚洲精品一区av在线播放| 国产日韩欧美视频| 精品久久久中文| 91在线网站视频| 国产日本欧美在线观看| 精品国偷自产在线视频| 国产不卡视频在线| 久久久成人精品视频| 大桥未久av一区二区三区| 日韩精品在线视频观看| 国产在线观看精品一区二区三区| 一区二区国产精品视频| 日韩经典一区二区三区| 精品亚洲一区二区三区在线播放| 欧洲成人在线视频| 亚洲精品视频网上网址在线观看| 亚洲免费精彩视频| 亚洲成人久久久| 国产精品第七十二页| 精品国产一区二区三区久久狼黑人| 欧美亚洲视频一区二区| 成人激情视频在线播放| 亚洲国产成人久久综合一区| 96国产粉嫩美女| 亚洲www永久成人夜色| 午夜精品久久久久久99热软件| 久久精品2019中文字幕| 亚洲色图15p| 91精品国产色综合久久不卡98口| 国产精品亚洲精品| 亚洲成人1234| 精品国产乱码久久久久久天美| 日韩亚洲在线观看| 国产性色av一区二区| 欧美日韩中文字幕综合视频| 日韩精品久久久久久久玫瑰园| 国产精品久久久久久亚洲影视| 欧美大秀在线观看| 亚洲午夜av电影| 亚洲a在线播放| 精品国产乱码久久久久久虫虫漫画| 亚洲欧美激情视频| 亚洲精品日韩欧美| 久久久999国产精品| 粉嫩av一区二区三区免费野| 在线观看精品自拍私拍| 2023亚洲男人天堂| 中文字幕在线看视频国产欧美| 中文字幕日韩精品有码视频| 欧美中文在线免费| 疯狂做受xxxx高潮欧美日本| 久久久亚洲欧洲日产国码aⅴ| 免费99精品国产自在在线|