博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sicily 1150 简单魔方
阅读量:4972 次
发布时间:2019-06-12

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

由于用深度优先搜索算法不能提交,故采用广度搜索优先算法。这里的广度优先算法比较特殊一点,就是我采用了类似加法器的进位机制来实现。(make by liurunjia 转载请注明出处,thx)

#include 
#include
using namespace std;#define N 10//定义数据结构typedef struct node{ int a1; int a2; int a3; int a4; int a5; int a6; int a7; int a8;}Node; //操作数组 char optArray[N]; Node StateNode;//表示当前状态 Node Target;//表示目标状态 int STEP;//声明比较函数bool isEqual(Node a,Node b);//声明操作函数(操作符)void operatorFunction(char opt); //模仿加法进位,返回值表示是否已经达到最大值,即不能再进位了 bool IncreaseByStep(){ bool flag=true; for(int i=0;i
>STEP&&STEP!=-1) { cin>>Target.a1>>Target.a2>>Target.a3>>Target.a4>>Target.a5>>Target.a6>>Target.a7>>Target.a8; bool myFlag=true; init(); initState(); while(myFlag) { if(IncreaseByStep()) { initState(); bool stepFlag=true; int stepInfact; for(int j=N-1;j>=0;j--) { if(optArray[j]!='O') { if(stepFlag) { stepInfact=j+1; stepFlag=false; } operatorFunction(optArray[j]); } } if(isEqual(StateNode,Target)) { cout<
<<" "; for(int j=stepInfact-1;j>=0;j--) { cout<

 

转载于:https://www.cnblogs.com/growing/archive/2011/12/18/2291870.html

你可能感兴趣的文章
zipfile
查看>>
asp.net
查看>>
javascript面对对象编程 之继承
查看>>
Tomcat中的服务器组件和 服务组件
查看>>
ibatis/mybatis显示sql语句 log4j.properties配置文件
查看>>
“cvc-complex-type.2.4.a: Invalid content was found starting with element 'taglib'”错误的解决办法...
查看>>
IE下判断IE版本的语句...[if lte IE 8]……[endif] ,判断ie浏览器引用样式
查看>>
161208、Java enum 枚举还可以这么用
查看>>
在地图上显示当前的位置
查看>>
关于分布式事务、两阶段提交协议、三阶提交协议
查看>>
《写给大家看的设计书》,推荐给想了解设计的程序员
查看>>
android开发之定制ViewPager滑动事件
查看>>
【转】我所积累的20条编程经验
查看>>
Fiddler拦截并动态修改网页内容简易教程
查看>>
文件操作的 Win32 API
查看>>
IsSynchronizedWithCurrentItem 会让 ListBox 默认选中第一项
查看>>
java多线程-多线程常识
查看>>
团队冲刺01
查看>>
MATLAB—地图
查看>>
转 List<T>采用delegate快速实现排序、查找等操作
查看>>