博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(BFS)poj2935-Basic Wall Maze
阅读量:5244 次
发布时间:2019-06-14

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

题目与最基本的BFS迷宫的区别就是有一些障碍,可以通过建立三维数组,标记某个地方有障碍不能走。另一个点是输出路径,对此建立结构体时要建立一个pre变量,指向前一个的下标。这样回溯(方法十分经典)就可以顺利的输出。

这道题难度的确很小,可是我却花了近两个小时才顺利AC,实在是现在水平太不足了,要努力学习的真的是有好多啊。不管怎样,尽力吧。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 struct grid 7 { 8 int x,y;//坐标 9 int pre;//回溯前一个的下标 10 int dir; 11 }point[5025]; 12 int si,sj,ei,ej,a[4],dir[10][10][4],direction[4][2]={
{-1,0},{
0,1},{
1,0},{
0,-1}},vi[8][8]; 13 int bfs() 14 { 15 memset(vi,0,sizeof(vi)); 16 int front=0,tail=1; 17 point[front].x=si; 18 point[front].y=sj; 19 point[front].pre=-1; 20 grid temp,temp2; 21 vi[si][sj]=1; 22 while(front
0) 51 { 52 print(point[x].pre); 53 if(point[x].dir==0) 54 { 55 printf("N"); 56 } 57 else if(point[x].dir==1) 58 { 59 printf("E"); 60 } 61 else if(point[x].dir==2) 62 { 63 printf("S"); 64 } 65 else printf("W"); 66 } 67 68 } 69 int main() 70 { 71 while(scanf("%d%d",&sj,&si)) 72 { 73 int i,j,k,an; 74 if(si==0&&sj==0) 75 break; 76 scanf("%d%d",&ej,&ei); 77 memset(dir,0,sizeof(dir)); 78 for(i=1;i<=6;i++) 79 { 80 dir[1][i][0]=1; 81 dir[6][i][2]=1; 82 dir[i][1][3]=1; 83 dir[i][6][1]=1; 84 } 85 for(j=0;j<3;j++){ 86 scanf("%d %d %d %d",&a[1],&a[0],&a[3],&a[2]);//注意数据是行列与平常不同的 87 88 if(a[0]==a[2]) 89 { 90 for(k=min(a[1],a[3])+1;k

 

转载于:https://www.cnblogs.com/quintessence/p/6036668.html

你可能感兴趣的文章
C# 之 提高WebService性能大数据量网络传输处理
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>