已统计的结果如下:
馬下一步可以落子的坐标(馬=40)
40---21
40---23
40---33
40---51
40---59
40---57
40---47
40---29
结果:
string PointMa = "待移动棋子(馬)"; //PointMa = 40
40---21 和 40---23 时, 40-21=19 40-23=17
40---33 和 40---51 时, 40-33=7 40-51=-11
40---59 和 40---57 时, 40-59=-19 40-57=-17
40---47 和 40---29 时, 40-47=-7 40-29=11
可得知: PointMa - 目的坐标值 = ±7 || ±11 || ±17 || ±19 时符合馬的落点
同时:
40---21 和 40---23 时, 40-21=19 40-23=17
可得知: PointMa - 目的坐标值 = 17 或 19 时,需要检测 PointMa - 9 处的撇脚
40---33 和 40---51 时, 40-33=7 40-51=-11
可得知: PointMa - 目的坐标值 = 7 或 -11 时,需要检测 PointMa + 1 处的撇脚
40---59 和 40---57 时, 40-59=-19 40-57=-17
可得知: PointMa - 目的坐标值 = -19 或 -17 时,需要检测 PointMa + 9 处的撇脚
40---47 和 40---29 时, 40-47=-7 40-29=11
可得知: PointMa - 目的坐标值 = -7 或 11 时,需要检测 PointMa - 1 处的撇脚
我用上述规律写了一份实现,勉强可以达到实现,但感觉很不合理,请大家帮我想一想更好的算法。
另外补充一个问题:
一直看前辈们说好好学习数据结构和算法的书,因为是自学的C++,在这方面没花什么时间。
我想问的是,这类书籍是不是对我现在的问题帮助很大?