广度优先搜索与八字码问题hélium

广度优先搜索算法(Breadth-FirstSearch),又称为"宽度优先搜索"或"横向优先搜索"主要可以解决两类问题:

·是否存在从起点到终点的路径

·找出从起点到终点的最短路径a

算法描述:

1intbfs(){2初始化首结点入队(首指针为0,尾指针为1)3while(首指针小于尾指针){4首指针后移一位5for(;;){产生子结点6if(){判断子结点是否满足条件7if(){如果结点未与之前产生过重复8尾指针后移9存入新的结点(提供结点的父结点和层数)10if(){如果新结点是目标节点11输出并退出12}13}14}15}16}17}

值得注意的是,广搜的过程中每生成一个子结点,都要提供指向他们的父结点的指针和层数,以免找到解的时候找不到来时的路径。

广度优先搜索在访问完该层的所有结点后,才开始访问下一层

关于从搜索树通过队列存入数组的思想:

八字码问题

Description

The15-puzzlehasbeenaroundforover100years;evenifyoudon'tknowitbythatname,you'veseenit.Itisconstructedwith15slidingtiles,eachwithanumberfrom1to15onit,andallpackedintoa4by4framewithonetilemissing.Let'scallthemissingtile'x';theobjectofthepuzzleistoarrangethetilessothattheyareorderedas:

123456789101112131415x

wheretheonlylegaloperationistoexchange'x'withoneofthetileswithwhichitsharesanedge.Asanexample,thefollowingsequenceofmovessolvesaslightlyscrambledpuzzle:

123412341234123456785678567856789x1012910x129101112910111213141115131411151314x15131415xr->d->r->

Thelettersinthepreviousrowindicatewhichneighborofthe'x'tileisswappedwiththe'x'tileateachstep;legalvaluesare'r','l','u'and'd',forright,left,up,anddown,respectively.Notallpuzzlescanbesolved;in1870,amannamedSamLoydwasfamousfordistributinganunsolvableversionofthepuzzle,andfrustratingmanypeople.Infact,allyouhavetodotomakearegularpuzzleintoanunsolvableoneistoswaptwotiles(notcountingthemissing'x'tile,ofcourse).Inthisproblem,youwillwriteaprogramforsolvingthelesswell-known8-puzzle,composedoftilesonathreebythreearrangement.

Input

Youwillreceiveadescriptionofaconfigurationofthe8puzzle.Thedescriptionisjustalistofthetilesintheirinitialpositions,withtherowslistedfromtoptobottom,andthetileslistedfromlefttorightwithinarow,wherethetilesarerepresentedbynumbers1to8,plus'x'.Forexample,thispuzzle

123x46758

isdescribedbythislist:

Output

Youwillprinttostandardoutputeithertheword``unsolvable'',ifthepuzzlehasnosolution,orastringconsistingentirelyoftheletters'r','l','u'and'd'thatdescribesaseriesofmovesthatproduceasolution.Thestringshouldincludenospacesandstartatthebeginningoftheline.

SampleInput

23415x768

SampleOutput

ullddrurdllurdr

这道题的思路大概是这样子

1.读入到a数组内2.输出一下a数组做一个子程序print23.定义一下宽搜的节点1)首先有一个a棋盘(是一个二维数组)2)移动空位,记住空位的位置x,y3)记录深度(你走了几步)叫dep4)父节点,打方案用,走法dd4.定义队列大数组结构体data1100000一个头指针op,尾指针cl5.偏移量,空位的移动方案d[5]结构体d[1].xd[1].y偏移6.初始化队列首节点入队(初始状态)写一个拷贝子程序7.做一个棋盘之间的复制copy(a,b)把a棋盘的值拷贝到b棋盘8.判断两个棋盘的值是否相同

9.判断队列中棋盘是否存在exist(a)a棋盘在我的data1数组中从1到cl是否存在10.输出方案的子程序print111.写宽搜的框架

但这个时候问题来了,单项搜索的效率太低了!!!如果要走20步,程序需要运行8秒多!!!

这个时候,我们会发现题目中给出了终态!在这种情况下,同样的搜索从初态和终态出发各搜索一半状态,产生两棵深度减半的搜索树,在中间交会、组合成最终的答案。

这道题是不是完美地解决了??

等等!还有unsolvable的判断!但是这道题不能用搜索来判断是否有解------无解的时候程序将无限的搜索下去!!

这个时候就需要事先判断八个数字的排列了。

我们会用到置换:

(摘自百度百科)

也就是说,我们可以统计排列中逆序的次数(即后一项小于前一项,0不计),如果有奇数次,则无解。

THE END
1.生辰八字8宫4度代表什么意思而8宫4度则是指根据八字排盘的四柱坐标,每根柱子的干支对应一个方位,从而得出一个人四柱八字的五行属性。生辰八字8宫4度的含义牵涉到人的性格、命运、财富等方面,通过深入研究这一理论,可以更好地了解自己的命运走向。 生辰八字8宫4度代表什么意思 宫庆易 拼音五行释意 庆 qìng 木 象征喜事临门,吉祥幸福,心想http://hmz5.com/news/2024-04-13-041118191
2.甲辰戊辰辛酉戊子生辰八字命盘分析详解公历: 2024年 04月 27日 农历:2024年3月19日 非闰月 时间: 0-1点使用23-24点八字 公历:2024年是闰年 谷雨:公历2024-04-19 21:59 立夏:公历2024-05-05 08:09 交运:命主于公历 2027-02-01 交运 (会有几天误差,也有用阴历生日的) 调整出生月:默认(戊辰),上月(丁卯),下月(己巳), http://m-mfsm.kvov.com/bzmp.php?i=2024-04-27&t=1&x=1&ggg=cg
3.袁天罡称骨算命:男女命骨重三两八钱(3.8两)详解明月辰时袁天罡:唐初益州成都(今四川成都)人。善风鉴,累验不爽,曾仕于隋,为盐官令。唐时, 为火山令。著有《六壬课》、《五行相书》等。通志著录,其有《易镜玄要》一卷。久佚。 卜易家袁天罡神数,用称骨分量,照年.月.日.时推算一生之荣枯,评定百年之贵贱。按 https://www.163.com/dy/article/J910OIQF05566RK2.html
4.[笔记]四偏(四长生,四驿马)—四正(沐浴桃花四败四旺,将星3.行止彬彬有礼. 4.性情温顺,但太随和. 5.喜欢做中间人排解忧纷. 6.思虑周到.行事公正.不袒护. 7.缺乏果断力. 8.容易好心没好抱,惹祸上身 辰宫与戌宫在斗数命盘上合称为「天罗地网」,其实这两个宫位是值得花费时间去研究的,在此坐命的生命特质也「奇异」一些,来自生命的考验也严酷一点,是英雄https://www.douban.com/note/700624768/
5.头条文章2、★夏天出生八字火旺为主导的人; 3、夏季巳午未月阴阳平衡喜忌总论 4、夏天生人 ㈡、夏季三月生人天命特性总论 1、火在天道的对应 2、火在天道的对应: 3、夏天叫【成阳用阴】:巳午未月成阳了,能见到阴有一定平衡的,事业方面肯定有一定的成就了。 https://card.weibo.com/article/m/show/id/2309404641065453093168
6.日期与天干地支算法地支始终是猴羊余数分别为:4、 5、 6、 7、 8、 9、 10、 11、 0(能整除)、1、 2、3, 代表地支为:子、丑、寅、卯、辰、巳、午、 未、 申、酉、戌、亥, 比如2005年为例:年代末尾数为5,对应的天干为乙,2005除以12,余数为1,对应的地支为酉,所以2005年为乙酉年。 https://blog.csdn.net/fengxiaochenduanduan/article/details/11787329/
7.八字的班级口号加油口号霸气押韵八字八字的班级口号加油口号霸气押韵八字3 1、奥运精神永驻我心 2、强身健体立志成材 3、顽强拼搏超越极限 4、读书百遍,而义自见。 5、厚积薄发,志在必得。 6、学而不厌,诲人不倦。 7、居安思危,常备不懈。 8、放下屠刀,立地成佛。 9、翻手为云,覆手为雨。 https://www.ruiwen.com/kouhao/5946967.html
8.2024年黄历结婚吉日结婚应该避开不适合的月份接亲网公历2024年3月4日 农历2024年正月廿四 冲鸡(辛酉)煞西 星期一 公历2024年3月8日 农历2024年正月廿八 冲牛(乙丑)煞西 星期五 公历2024年3月11日 农历2024年二月初二 冲龙(戊辰)煞北 星期一 公历2024年3月13日 农历2024年二月初四 冲马(庚午)煞南 星期三 https://www.jieqinwang.com/baike/130820
9.2024年3月8日出生的宝宝五行缺什么八字:甲辰 丁卯 辛未 庚寅 长按保存图片↓↓↓ 2024年3月8日4时出生的宝宝五行缺水 农历:甲辰年 正月 廿八日 寅时 纳音:复灯火 炉中火 路旁土 松柏木 五行:木土 火木 金土 金木 八字:甲辰 丁卯 辛未 庚寅 长按保存图片↓↓↓ 2024年3月8日5时出生的宝宝五行缺水 http://www.8882088.com/html/2352.htm
10.受孕月份算男女这么准?看看你的最佳受孕月份受孕月份在1、3、5、6、7、9、10、11月份的宝宝,为女孩。 4.母亲受孕年龄:34岁 受孕月份在2、4、5、6、7、8、9、10月份的宝宝,为女孩。 5.母亲受孕年龄:35岁 受孕月份在3、5、6、7、9、10月份的宝宝,为女孩。 6.母亲受孕年龄:36岁 受孕月份在1、4、6、7、8月份的宝宝,为女孩。 https://www.snsnb.com/post-143455-1.html
11.五行与名字笔画之间有什么关系?小编特别提醒朋友们注意:小编在《五行究竟对应啥数字?》一文中曾经提到,目前一些朋友将1、2为木,3、4为火、5、6为土,7、8为金,9、0为水,这是不可取的。 2、周易五行的笔划数同现在词典的笔画数算法不同 在名字的笔划数上,小编特别提醒朋友们注意: http://mingzi.jb51.net/qiming/bazi/12105.html
12.金川集团企业文化大纲及高质量发展战略体系3.资源保障 2020年镍原料自给率达到60%,铜原料自给率达到30%,钴原料自给率达到60%,贵金属原料自给率达到65%。 4.科技创新 2020年拥有专利4000件,研发投入占销售收入比例不低于3.5%,科技进步对经济增长贡献率达到65%。 5.成本质量控制 综合考虑增收和节支,2018—2020年可比产品总成本环比降低不低于20%,电镍https://mse.xauat.edu.cn/info/1039/2104.htm