问题描述:
解决类华容道问题,就是我给你一个棋局,需要将指定的棋子移动出来,如果可以把步骤解出来,如果不可以就输出解不出来。棋子和棋盘的大小不固定,需要一个一般化的解决办法。就是我输入任意一种棋局,并指定我要移动出来的棋子,是不是可以移动出来。棋局可能比较大,棋盘越大跑出来的时间越长。棋子的大小可以用数字或者其他编码格式,只要可以满足需求就可以。
输入就是棋盘的布局和要移动的棋子,输出就是移动步骤,或者告诉我们移动不出来。
比如我给了一种如下的棋盘,需要设计程序把曹操移动出来。但这只是华容道问题,需要进行延伸,当我再给任意一种其他的棋盘和棋子大小个数不一样的棋局(最小是20*20的棋局),我指定的棋子是不是还能移动出来,如果可以就把每一步的移动步骤写出来,如果不可以就输出无解即可。
重点: 1,首先解决华容道问题。
2,其次解决类华容道问题,就是棋盘还是5*4,但是棋子不再是10个,可以是任意多个,比如8个,9个都可能,而且棋子的种类也不一定,但是都是规则的矩形棋子,将最大的棋子移动出来。
3,棋盘还是不变,现在不仅仅要把最大的棋子移动出来,还需要把我指定的棋子移动出来,同样给出结果。
4,最终结果,就是我棋盘也要改动大小(最小支持20*20),棋子个数和类型都不一定,我指定一个棋子,是否能将结果输出。
华容道问题整理:
1,算法:
首先,就是那个问题,要求是输入一个二维数组(随机的,20*20),和其中某一个棋子(随机,单位棋子的整数倍),最终输出结果打印在控制台,有四个元素,一个是运行了多长时间,一个是移动了多少步,还有一个是一共遍历了多少节点,以及每一步的移动步骤。
代码尽量多谢注释,谢谢。
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。