【noi 2.5_1792】迷宫(bfs 或 dfs)
2018-06-17 23:48:40来源:未知 阅读 ()
简单搜索,在n*n的矩阵中,问从起点是否可以到达终点,有些格子不可走,上下左右四个方向都可以走。(N<=100)
1.bfs从起点开始走,直到走到终点或全部遍历过一次就结束。
2.dfs要一走到终点就返回,否则4^n会TLE。由于询问“是否可到达终点”,就直接递归“是否可以走到点(x,y)点”的函数,也是直到找到终点就结束。
下面附上dfs的代码——
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define N 110 7 8 char s[N][N]; 9 int v[N][N],a[4]={1,-1,0,0},b[4]={0,0,1,-1}; 10 int n,xx,yy; 11 12 int goit(int x,int y) 13 { 14 if (x<0||y<0||x>=n||y>=n) return 0; 15 if (s[x][y]=='#'||v[x][y]) return 0; 16 if (x==xx && y==yy) return 1; 17 v[x][y]=1; 18 for (int i=0;i<4;i++) 19 if (goit(x+a[i],y+b[i])) return 1; 20 return 0; 21 } 22 23 int main() 24 { 25 //freopen("a.in","r",stdin); 26 int T; 27 scanf("%d",&T); 28 while (T--) 29 { 30 scanf("%d",&n); 31 for (int i=0;i<n;i++) 32 scanf("%s",s[i]); 33 memset(v,0,sizeof(v)); 34 int x,y; 35 scanf("%d%d%d%d",&x,&y,&xx,&yy); 36 int tf=goit(x,y); 37 if (tf) printf("YES\n"); 38 else printf("NO\n"); 39 } 40 return 0; 41 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 津津的储蓄计划 NOIp提高组2004 2020-04-01
- 【做题笔记】[NOIOJ,非NOIp原题]装箱问题 2020-02-14
- P2052 [NOI2011]道路修建 2019-10-29
- CSP(noip)中的简单对拍写法 2019-10-25
- P2704 [NOI2001]炮兵阵地 (状压DP) 2019-10-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash