计算函数SolveThepatch()的时间复杂度

时间:2019-12-14 11:14:34

标签: algorithm time-complexity recursive-backtracking

我如何计算这个函数的复杂度,我尝试了很多但是却不知道复杂度,该函数会填充一个补丁,该补丁包含无法填充的封闭单元格,除了封闭以外,所有框都必须填充,请帮助计算复杂性。

int SolveThepatch(int **maze ,int x ,int y ,int n ,int m,int notSa)
{
    int t;

    if ((x > n) || (y > m) || (x < 0) || (y < 0))
        return -1;

    if (maze[x][y] == -1)
        return -1;

    if (maze[x][y] == 1)
        return -1;

    path.push_back(x);
    path.push_back(y);

    if (maze[x][y] == 2)
    {
        if ((path.size() / 2) == (((m+1) * (n+1)) - notSa))
        {
            return 5;
        }
        path.pop_back();
        path.pop_back();
        return -1;
    }

    maze[x][y] = 1;


    t = SolveTheMaze(maze, x + 1, y, n, m, notSa);
    if (t==5)
    {
        return 5;
    }

    t = SolveTheMaze(maze, x - 1, y, n, m, notSa);
    if (t == 5)
    {
        return 5;
    }

    t = SolveTheMaze(maze, x, y + 1, n, m, notSa);
    if (t == 5)
    {
        return 5;
    }

    t = SolveTheMaze(maze, x, y - 1, n, m, notSa);
    if (t == 5)
    {
        return 5;
    }

    path.pop_back();
    path.pop_back();
    maze[x][y] = 0;
}

0 个答案:

没有答案