请问这道关于马的遍历的问题代码问题在哪里?

img


#include 
#include
using namespace std;
long long int board[401][401];//表示该点是否走过;
int length, width;//确定长和宽
int hang0, lie0; int t, sum[301], road;//sum出差到某点的步数,road表示到某点的第几条路;
bool arrive;//hang0,lie0表示初始点的位置
int hang_move[8] = { 1,1,2,2,-1,-1,-2,-2 };
int lie_move[8] = { 2,-2,1,-1,2,-2,1,-1 };
void moveto1(int hang1, int lie1) { //t表示移动步数
    board[hang1][lie1] = 1;
    if (hang1 == hang0&& lie1 == lie0) {
        sum[road] = t;
        road++;
        arrive = true;
    }
    else
    {
        t++;
        int i1, j1, k;
        for (k = 0; k < 8; k++) {
            i1 = hang1 + hang_move[k];
            j1 = lie1 + lie_move[k];
            if (i1 > 0 && j1 > 0 && i1 <= length && j1 <= width && board[i1][j1] != 1)
            {
                moveto1(i1, j1);
            }
        }
    }
}
int main()
{
    cin >> length >> width;
    cin >> hang0 >> lie0; 
    for (int i = 1; i <= length; i++) {
        for (int j = 1; j <= width; j++) {
            for (int i = 1; i <= length; i++) {
                for (int j = 1; j <= width; j++)
                    board[i][j] = 0;//将棋盘上每个点归零
            }
            arrive = false;
            t = 0;
            road = 0;
            moveto1(i, j);
            if (arrive == true) {
                int min = sum[0];
                for (int i = 1; i < road; i++)
                    if (sum[i] <  min)
                        min = sum[i];
                cout << min << " ";
            }
            else
                cout << "-1" << " ";
        }
        cout << endl;
    }
    
}
for (int i = 1; i <= length; i++) {
        for (int j = 1; j <= width; j++) {
            for (int i = 1; i <= length; i++) {
                for (int j = 1; j <= width; j++)
这里怎么i j出现了2