所以递归不是我的强项,我一直面临挑战,要创建一个递归的 floodFill 函数,如果值为零,则用 1 填充整数向量的向量。由于我以外的原因,我的代码不断出现段错误。也许我的代码会让这听起来更清楚。
这是要填充的网格:
vector<vector<int> > grid_;
它属于我创建的一个名为“Grid”的对象,它基本上是一组帮助操作向量的函数。网格的值被初始化为全零。
这是我的洪水填充功能:
void floodFill(int x, int y, Grid & G)
{
if (G.getValue(x,y))
{
G.setValue(x,y,1);
if(x < G.getColumns()-1 && x >= 0 && y < G.getRows()-1 && y >= 0)
floodFill(x+1,y,G);
if(x < G.getColumns()-1 && x >= 0 && y < G.getRows()-1 && y >= 0)
floodFill(x,y+1,G);
if(x < G.getColumns()-1 && x >= 0 && y < G.getRows()-1 && y >= 0)
floodFill(x-1,y,G);
if(x < G.getColumns()-1 && x >= 0 && y < G.getRows()-1 && y >= 0)
floodFill(x,y-1,G);
}
}
这里的目的是让函数检查一个点的值是否为零,如果是,则将其更改为 1。然后它应该检查它上面的那个。它会这样做,直到找到 1 或到达向量的末尾。然后它尝试另一个方向并继续前进,直到与上述相同的条件,依此类推,直到洪水充满。
谁能帮我解决这个问题?也许告诉我怎么了?
谢谢!