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