博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【搜索】魔板问题(BFS)
阅读量:5965 次
发布时间:2019-06-19

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

                                                             【搜索】魔板问题

时间限制: 1 Sec  内存限制: 64 MB

提交: 5  解决: 3
[][][]

题目描述

据说能使持有者成为世界之主的上古神器隐藏在魔板空间,魔板由8个同样大小的方块组成,每个方块颜色均不相同,按顺时针方向依次写下各方块的颜色代号,例如序列(1,2,3,4,5,6,7,8)即代表图所示的魔板状态。
对于魔板可施加三种不同的操作,分别以A,B,C标识,具体操作方法如图所示。
对于每种可能的状态,这三种基本操作都可以使用。你要编程计算用最少的基本操作完成基本状态到特殊状态的转换,输出基本操作序列。

输入

只有一行,包括8个整数,用空格分开(这些整数在范围 1~8 之间),表示目标状态。

输出

第一行包括一个整数,表示最短操作序列的长度。  
第二行在字典序中最早出现的操作序列,用字符串表示,除最后一行外,每行输出60个字符。 

样例输入

2 6 8 4 5 7 3 1

样例输出

7BCABCCB

提示

样例的输入目标状态是由BCABCCB这7步操作获得的,如图所示。

【分析】化为一维字符串,反正也只有八个,暴力BFS。
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f#define mod 1000000007typedef long long ll;using namespace std;const int N = 25;const int MAX = 2000;int n,m,maxn=-1;int vis[N];string s="",anss;bool flag=false;map
p;struct man{ string str; string ans; int step;};queue
q;void bfs(){ string str="12348765"; string ans=""; man d;d.ans=ans;d.step=0;d.str=str; p[str]=1; q.push(d); while(!q.empty()){ man t=q.front(); // cout<
<<" "<
<
=5;i--){ s+=aa[i-1]+'0'; } bfs(); cout<
<
<
<
View Code

 

转载于:https://www.cnblogs.com/jianrenfang/p/5743757.html

你可能感兴趣的文章
很实用的小功能,通过配置Web.xml让点击文件路径的超链接,直接下载而不会在浏览器上尝试打开...
查看>>
【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
查看>>
Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)
查看>>
再谈 document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
查看>>
项目管理: Maven 让事情变得简单
查看>>
传智播客--itcastbbs(四)
查看>>
【转】笔记本电脑关机时蓝屏是怎么回事
查看>>
UVA 10118 Free Candies
查看>>
How to remove replication in Syteline
查看>>
windows + visual studio 2010 配置SVN
查看>>
AXD+H-JTAG环境搭建总结
查看>>
Oracle 项目就是那回事 ----表空间的管理
查看>>
Linux命令常用的快捷键
查看>>
推荐一款图片轮换jQuery插件
查看>>
Reading papers_6(Pattern Recognition And Machine Learning一书,ing...)
查看>>
HDU 3441 Rotation
查看>>
[zz]KVM 虚拟机故障排除一例
查看>>
hadoop 权威指南学习笔记ing(1)
查看>>
从代码中抽离数据的原则
查看>>
[Bootstrap] 8. 'Collapse', data-target, data-toggle & data-parent
查看>>