作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
<分区>
我在 bmp 中有以下用于“blob 填充”的代码。但是,它在循环 7201 或类似的地方耗尽了堆栈上的内存。我如何增加内存?我听说堆栈大小是 1MB,太小了!我有 32GB 内存,我想充分利用它。递归似乎是继续这样的算法的方式,如果我的堆栈不是太小的话。 (这是一个四向递归;每个函数调用都会生成四个相同的函数调用)
public HashSet<int> evalpxls = new HashSet<int>();
public String addLikePixels(int r, int c, Byte A, Byte R, Byte G, Byte B, Bitmap bmp)
{
reclvl++;
dl("Try r:" + r+ " c:" + c + " reclvl:"+reclvl);
if (evalpxls.Contains(hash(r,c)) || r>=bmp.Height || c>=bmp.Width || r<0 || c<0) return "";
evalpxls.Add(hash(r, c));
var p = bmp.GetPixel(c, r);
String curpix = "[" + r + "," + c +"]";
if (p.A == A && p.B == B && p.G == G && p.R == R) //if same color as main color
{
return curpix + addLikePixels(r + 1, c, A, R, G, B, bmp) + addLikePixels(r, c + 1, A, R, G, B, bmp) + addLikePixels(r - 1, c, A, R, G, B, bmp) + addLikePixels(r, c - 1, A, R, G, B, bmp);
}
else //if different color
return "";
}
我是一名优秀的程序员,十分优秀!