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

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

题目描述:

8×8的棋盘上有4个棋子,棋子的运动方法如下:
1.如果其上/下/左/右一格没有棋子,则可以去;2.如果其上/下/左/右一格有棋子,而且沿原方向再跳一步没有,则可以去。

给出初始结束位置,问8步以内能否走到?

题解:

双向BFS。

从初始结束位置一起跑4步。

也称meet_in_the_middle

代码:

#include#include
#include
#include
#include
#include
using namespace std;bool ck(int x,int y){ return x>=1&&x<=8&&y>=1&&y<=8;}struct P{ int x,y; P(){} P(int x,int y):x(x),y(y){}};bool cmp(P a,P b){ if(a.x==b.x)return a.y
mp1,mp2; queue
q1,q2,tmp; int hs1,hs2,x,y,tx,ty; hs1 = a.v(),hs2=b.v(); if(hs1==hs2)return 1; mp1[hs1]=mp2[hs2]=1; q1.push(a),q2.push(b); for(register int dep=1;dep<=4;dep++) { while(!q1.empty()) { u = q1.front(); q1.pop(); for(register int i=1;i<=4;i++) { x = u.s[i].x,y = u.s[i].y; for(register int j=0;j<4;j++) { t=u; tx=x+dx[j],ty=y+dy[j]; if(!t.emp(tx,ty)) { tx+=dx[j],ty+=dy[j]; } if(t.emp(tx,ty)) { t.s[i].x=tx,t.s[i].y=ty; t.bal(); hs1 = t.v(); if(mp2[hs1])return dep+mp2[hs1]; if(!mp1[hs1]) { mp1[hs1]=dep; tmp.push(t); } } } } } while(!tmp.empty())q1.push(tmp.front()),tmp.pop(); while(!q2.empty()) { u = q2.front(); q2.pop(); for(register int i=1;i<=4;i++) { x = u.s[i].x,y = u.s[i].y; for(register int j=0;j<4;j++) { t=u; tx=x+dx[j],ty=y+dy[j]; if(!t.emp(tx,ty)) { tx+=dx[j],ty+=dy[j]; } if(t.emp(tx,ty)) { t.s[i].x=tx,t.s[i].y=ty; t.bal(); hs2 = t.v(); if(mp1[hs2])return dep+mp1[hs2]; if(!mp2[hs2]) { mp2[hs2]=dep; tmp.push(t); } } } } } while(!tmp.empty())q2.push(tmp.front()),tmp.pop(); } return 0;}int main(){ while(scanf("%d%d",&a.s[1].x,&a.s[1].y)>0) { for(int i=2;i<=4;i++)scanf("%d%d",&a.s[i].x,&a.s[i].y); for(int i=1;i<=4;i++)scanf("%d%d",&b.s[i].x,&b.s[i].y); sort(a.s+1,a.s+5,cmp),sort(b.s+1,b.s+5,cmp); printf(bfs()?"YES\n":"NO\n"); } return 0;}

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10002645.html

你可能感兴趣的文章
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
Java泛型的基本使用
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
background-clip,background-origin
查看>>
【Linux】ping命令详解
查看>>
java学习第三天
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
Linux上架设boost的安装及配置过程
查看>>