首先需要理解不走回头路的含义:
众所周知,马可以走八个方向,加上不可走回头路的约束则说明,在前往终点的路途中在垂直方向上的坐标不能变小,依靠水平方向上左右,来达到终点,可能词不达意,见下图
只能沿箭头方向移动,可类比象棋里的卒过界后能前左右移动,但不能后头
dp 思路:某个位置的值等于满足上述条件的情况下可以到达该位置的位置的值之和,有点拗口
上图
所以dp的思路此时就非常明显了
在合法的情况下
dp[x][y]=dp[x-1][y+2]+dp[x-1][y-2]+dp[x-2][y+1]+dp[x-2][y-1];
代码如下
#include <iostream>
using namespace std;
int arr[105][105];
int main() {
int x,