博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDUT 1269 走迷宫(BFS)
阅读量:5327 次
发布时间:2019-06-14

本文共 1643 字,大约阅读时间需要 5 分钟。

题意:中文不详述。

思路 :上上上场比赛让一个BFS给虐了,上次比赛让一个三维的给废掉了。。。。。。。所以急于从水题刷起。。。。。。还因为数组开小了WA了5,6次

#include 
#include
#include
#include
using namespace std;int m,n,sx,sy,ex,ey ;int mapp[17][17] ;int vis[17][17] ;int mpx[400],mpy[400] ;int dire[4][2] = {
{
0,-1},{-1,0},{
0,1},{
1,0}} ;int flag ;int step ;void DFS(int x,int y){ if(x == ex && y == ey) { flag = 1 ; for(int i = 1 ; i < step ; i++) printf("(%d,%d)->",mpx[i],mpy[i]) ; printf("(%d,%d)\n",ex,ey) ; } else { for(int i = 0 ; i < 4 ; i++) { int xx = x+dire[i][0] ; int yy = y+dire[i][1] ; if(mapp[xx][yy] && xx >= 1 && xx <= m && yy >= 1 && yy <= n && !vis[xx][yy]) { step++ ; vis[xx][yy] = 1 ; mpx[step] = xx ; mpy[step] = yy ; DFS(xx,yy) ; vis[xx][yy] = 0 ; step-- ; } } }}int main(){ while(~scanf("%d %d",&m,&n)) { memset(vis,0,sizeof(vis)) ; memset(mpx,0,sizeof(mpx)) ; memset(mpy,0,sizeof(mpy)) ; for(int i = 1 ; i <= m ; i++) for(int j = 1 ; j <= n ; j++) scanf("%d",&mapp[i][j]) ; scanf("%d %d",&sx,&sy) ; scanf("%d %d",&ex,&ey) ; step = 1 ; mpx[1] = sx ; mpy[1] = sy ; vis[sx][sy] = 1; flag = 0 ; DFS(sx,sy) ; if(!flag) printf("-1\n") ; } return 0;}
View Code

 

转载于:https://www.cnblogs.com/luyingfeng/p/3618631.html

你可能感兴趣的文章
RaspberryPI 3b 技术总结(包括Linux)
查看>>
Docker初步
查看>>
golang 读取 chrome保存的网站账号信息
查看>>
asp.net 读取导入的project(mpp)文件
查看>>
.NET core ABP 获取远程IP地址
查看>>
poj3414 Pots
查看>>
lombok系列(一)
查看>>
初次了解struts的action类
查看>>
netty使用(7)传输一个序列化对象
查看>>
不抱怨的世界
查看>>
Oracle rac11g 安装报INS41112
查看>>
浅拷贝与深拷贝
查看>>
android-常用部件
查看>>
cmockery库详解
查看>>
Android_获取屏幕大小的两种方法
查看>>
SpringBoot 2.0 整合Mybatis详细步骤
查看>>
Arcgis Android - HelloWorld
查看>>
LeetCode 翻转字符串里的单词
查看>>
mysql架构篇
查看>>
XDOJ1327
查看>>