ybtoj【基础算法】5章3题【立体推箱子】
发布日期:2021-06-29 04:50:29
浏览次数:2
分类:技术文章
本文共 1365 字,大约阅读时间需要 4 分钟。
立体推箱子
题目
解析
考虑设三个状态:
d x , y , 0 d_{x,y,0} dx,y,0表示立在 ( x , y ) (x,y) (x,y) d x , y , 1 d_{x,y,1} dx,y,1表示倒在 ( x , y ) , ( x , y − 1 ) (x,y),(x,y-1) (x,y),(x,y−1) d x , y , 2 d_{x,y,2} dx,y,2表示倒在 ( x , y ) , ( x − 1 , y ) (x,y),(x-1,y) (x,y),(x−1,y) 直接BFS即可code:
#include#include #include #include using namespace std;const int dx[3][4]={ { -1,0,2,0},{ -1,0,1,0},{ -2,0,1,0}},dy[3][4]={ { 0,2,0,-1},{ 0,1,0,-2},{ 0,1,0,-1}},dt[3][4]={ { 2,1,2,1},{ 1,0,1,0},{ 0,2,0,2}};int n,m,sx,sy,st,tx,ty,d[510][510][3];struct pa{ int x,y,t;}o2,o3;bool v[510][510][3];char s[510][510];queue q;inline bool check(pa x){ return x.x>=1&&x.x<=n&&x.y>=1&&x.y<=m&&s[x.x][x.y]!='#'&&(!v[x.x][x.y][x.t])&&(x.t?((x.t==1)?(1 >s[i][j];if(s[i][j]=='O')tx=i,ty=j;else if(s[i][j]=='X')sx=i,sy=j,st=(s[i][j-1]=='X')?1:((s[i-1][j]=='X')?2:0);} memset(d,0,sizeof(d)),memset(v,0,sizeof(v)),q.push((pa){ sx,sy,st}),v[sx][sy][st]=1; while(q.size()) { o2=q.front(),q.pop(); if(o2.x==tx&&o2.y==ty&&!o2.t){ printf("%d\n",d[tx][ty][0]);while(q.size())q.pop();continue;} for(register int i=0;i<4;++i)if(check(o3=(pa){ o2.x+dx[o2.t][i],o2.y+dy[o2.t][i],dt[o2.t][i]}))d[o3.x][o3.y][o3.t]=d[o2.x][o2.y][o2.t]+1,v[o3.x][o3.y][o3.t]=1,q.push(o3); } if(!v[tx][ty][0])printf("Impossible\n"); } return 0;}
转载地址:https://blog.csdn.net/zhanglili1597895/article/details/118050911 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月11日 09时16分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java设计模式之策略模式
2019-04-29
Java设计模式之状态模式
2019-04-29
C语言atol()函数:将字符串转换成long(长整型)
2019-04-29
C语言atof()函数:将字符串转换为double(双精度浮点数)
2019-04-29
jsp中标签意思
2019-04-29
煤球数目
2019-04-29
如何避免成为一个低级的码农?
2019-04-29
程序员的你一定要记住:你所说的每一句话都会被传出!
2019-04-29
一线 IT 公司开发转管理,我是怎么从 0 到 1 的?
2019-04-29
四平方和
2019-04-29
交换瓶子
2019-04-29
报纸页数
2019-04-29
打印方格
2019-04-29
冰雹数
2019-04-29
网友年龄
2019-04-29
今天百度终于收录了主页-开心-记录一下
2019-04-29
C#实现一直疯狂get访问一个网站
2019-04-29
阿里大牛分享程序员5年的职业生涯指南
2019-04-29
程序员迷茫:毕业时就已26,工作4年就已大龄,码农出路在哪? ...
2019-04-29
新生活方式品牌植治完成数百万种子轮融资, Ventech China领投 ...
2019-04-29