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

本文共 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微职位学习笔记-终端
查看>>
自己写了一个友盟推送的util
查看>>
Mapreduce 扫描hbase表建立solr索引
查看>>
RHEL 5.8 yum本地源
查看>>
Teams 新功能更新【五月底】Busy on Busy 忙线音
查看>>
orzdba安装与使用
查看>>
二叉搜索树的插入叶子结点的递归实现方法
查看>>
通过nginx配置不同二级域名代理多个系统
查看>>
linux基础篇-23,文件系统管理
查看>>
keepalived+nginx高可用配置
查看>>
node.js爬虫爬取电影天堂,实现电视剧批量下载。
查看>>
Ubuntu 18.04.1 LTS下部署FastDFS 5.11+Nginx 1.14.0
查看>>
PHP 运行方式(PHP SAPI介绍)
查看>>
puppet学习之puppet证书验证
查看>>
Server 2008 R2 AD RMS完整部署:四、客户端篇
查看>>
Alcatel-Lucent 7750 运营商认证设备在线用户数OID
查看>>
靠自己。linux manul手册入门
查看>>
思科设备中查询筛选的命令精华
查看>>
大数据未来将呈现的八大发展趋势
查看>>
cm 升级
查看>>