博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maze
阅读量:6801 次
发布时间:2019-06-26

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

Maze

题目链接:

BFS+状态压缩

把身上携带钥匙的状态压缩成一个2^10的整数。这道题难在如何表示墙和门所在的位置,我是另开了个两个N*N的数组mp_r[N][N],mp_c[N][N]分别以行和列错位存储存储墙和门的位置(mp_r[i][j]表示第r行j列和第r行j+1列的墙的状态),其他人好像是用mp[N][N][4]来存储墙和门的状态的,突然觉得我好蠢...这题坑点是一个位置可以存多把钥匙(吐血 怪不得这么多次都是WA)= =

代码如下:

1 #include
2 #include
3 #include
4 #define LL long long 5 #define N 55 6 using namespace std; 7 struct node{ 8 LL x,y,time; 9 bool key[10]; 10 }; 11 node s,e; 12 LL mp_r[N][N]; 13 LL mp_c[N][N]; 14 LL key[N][N][10]; 15 LL n,m,p; 16 bool mark[1024][N][N]; 17 bool flag; 18 LL dx[]={-1,1,0,0}; 19 LL dy[]={
0,0,-1,1}; 20 LL zip(node t){ 21 LL code=0; 22 for(LL i=0;i
que; 57 que.push(s); 58 while(!que.empty()){ 59 node t=que.front(); 60 que.pop(); 61 if(t.x==e.x&&t.y==e.y){ 62 e.time=t.time; 63 flag=1; 64 break; 65 } 66 for(LL i=0;i<4;++i){ 67 LL x=t.x+dx[i]; 68 LL y=t.y+dy[i]; 69 if(1<=x&&x<=n&&1<=y&&y<=m){ 70 node temp; 71 temp.x=x,temp.y=y,temp.time=t.time+1; 72 for(LL j=0;j

 

转载于:https://www.cnblogs.com/barrier/p/5796877.html

你可能感兴趣的文章
程序代码阅读与分析
查看>>
Linux 安装PHP PECL 百分百成功
查看>>
关于c++风格 code style
查看>>
svn 常用
查看>>
SVM支持向量机
查看>>
Asymptote 学习记录(2):例子阅读
查看>>
《常微分方程教程》习题2-2,4:一个跟踪问题
查看>>
陶哲轩实分析例17.2.3
查看>>
兩個集合之間的全體部分函數可以形成一個集合
查看>>
Elementary Methods in Number Theory Exercise 1.2.17
查看>>
委托由浅入深学习
查看>>
小程序中通过判断id来删除数据,当数据长度为0时,显示隐藏部分(交流QQ群:604788754)...
查看>>
php把数据转换为json格式
查看>>
Java线程(学习整理)--2---加入另一个线程join
查看>>
replace into 浅析之一
查看>>
软件工程15 个人阅读作业2—提出问题
查看>>
Windows Azure Traffic Manager的新的管理API
查看>>
Mybatis学习(4)输入映射、输出映射、动态sql
查看>>
java设计模式-策略模式
查看>>
iOS随笔记录
查看>>