@jijikk我看了你的测试记录,主要的问题是运行出错,这种问题一般是数组越界或指针飘逸造成的。在你的程序中,造成越界的代码是你对马的控制点的赋值,没有考虑x,y在加减后是否还在数组之内,从而造成了越界。
对那其中的几行给马的控制点赋值的代码,可以做以下更改(替换):
int fx[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
for(int i=0;i<8;i++){
int tx=x+fx[i][0],ty=y+fx[i][1];
if(tx>=0&&tx<=n&&ty>=0&&ty<=m)dp[tx][ty]=-1;
}
本人已经测试过了,没问题,放心使用,期待你的通过!@jijikk