关于深度优先搜索的问题


#include <stdio.h>
int getnum(int x, int y);
void dfs(int x, int y);
int map[10][10] =
{
    {1,1,1,1,1,1,1,1,1,1},
    {1,0,1,0,0,1,0,0,0,1},
    {1,0,0,0,1,1,0,3,0,1},
    {1,0,0,0,0,1,0,0,0,1},
    {1,3,0,0,3,1,0,3,0,1},
    {1,3,1,0,0,3,3,1,1,1},
    {1,0,3,3,0,0,0,3,3,1},
    {1,1,0,0,3,0,0,0,3,1},
    {1,0,0,1,3,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1}
};
typedef struct {
    int x;
    int y;
}Note;

int manipulate[4][2] =
{
    {0,1},
    {1,0},
    {0,-1},
    {-1,0}
};
int book[10][10] = { 0 };
int killing;
int max = 0;
int mx, my;

int main()
{
    
    dfs(1, 1);
    
    printf("%d from %d,%d", max, mx, my);
}

void dfs(int x,int y)
{
    if (1 == book[x][y] || 1 == map[x][y])
    {
        return;
    }
    book[x][y] = 1;
    killing = getnum(x, y);
    if (killing > max)
    {
        max = killing;
        mx = x;
        my = y;
    }


    
    int i;
    int tx, ty;
    for (i = 0; i < 4; i++)
    {
        tx = x + manipulate[i][0];
        ty = y + manipulate[i][1];

        
        dfs(tx, ty);
    }

}

    









int getnum(int x, int y)
{
    int sum=0;
    int i = x;
    while (map[i][y] != 1)
    {
        if (3 == map[i][y])
        {
            sum++;
        }
        i++;
    }
    
    i = x;
    while (map[i][y] != 1)
    {
        if (3 == map[i][y])
        {
            sum++;
        }
        i--;
    }

    int j = y;
    while (map[x][j] != 1)
    {
        if (3 == map[x][j])
            sum++;
        j++;
    }

    j = y;
    while (map[x][j] != 1)
    {
        if (3 == map[x][j])
            sum++;
        j--;
    }

    return sum;
}

能够出结果,但是结果似乎不对,不知到是哪里出了问题

你能描述下问题具体是要输出什么吗