就是建立一个数组作为象棋盘的二维棋点的坐标,马在棋盘上的走形(即一个算法),建一个循环(作为一个子函数来进行调用),在棋盘内走出从给定点所能走的所有的可能,选定另一点继续循环走下去,且不能重复,
一;对对所走的总步数与棋盘坐标书相比,判断是否重复
在走的路中,选出规定步数内没走完所有的坐标的,
二;对每步走的路径与前面所走的路对比,判断是否有重复
对所走的可行的路分别建立数组(用Vector的好点),在数组中实现选择
同时采用多线程,并用异常处理,以免死循环
在加上相应的输出,和GUI界面就行了
马要走到某些位置,是需要重复走回到一些位置的,即在总路径中,一些坐标是有重复出现的。你这样的判断不成立。关键是如何避免马走死循环的方法。一个十多步的死循环路径,如何判断是否重复?
要找到最短路径的算法应该很难吧。不知道要用些什么数学方法?
如果不要最短路径,可以用这种方法:
将总路径分成很多小段,每段都是当前位置到一个空格的最短路径。
即先判断当前位置A到下一任意可能位置(B1,B2...Bn)是否有空格。有则选任意一个,以这点为当前位置重新开始寻找。没有空格则找这些可能位置(Bn)的下一步(C1,C2...Cn)有没有空格,一直循环到找到一个空格为止。然后重新开始找这个位置到一个空格的最短路径,一直到穷尽所有空格。要注意的是每次找到的最短路径必定没有重复的坐标。比如一条路径A->B2->C3->Dn, Dn的可能选择中必须和A,B2,C3进行判断,相同则剔除。
[
本帖最后由 pigpigpigxk 于 2010-6-2 19:44 编辑 ]