我将尝试制作一个在 C# 中可以填充 int 数组的算法。基本上,就像 MS Paint 中的填充工具一样,我有一种颜色,如果我选择数组中的 (x,y) 坐标,则会用新的颜色替换所有相邻的初始颜色相同的元素。
例如:
如果我在(0,0)位置放入数字3,数组就会变成:
感谢您!
例如:
[0,0,0]
[0,1,0]
[1,1,0]
如果我在(0,0)位置放入数字3,数组就会变成:
[3,3,3]
[3,1,3]
[1,1,3]
我曾尝试使用递归方法,它确实可以工作,但不总是如此。事实上,有时候会出现“堆栈溢出”错误(似乎很合适)。下面是我的代码,如果您能告诉我哪里出了问题就太好了 :)
public int[,] fill(int[,] array, int x, int y, int initialInt, int newInt)
{
if (array[x, y] == initialInt)
{
array[x, y] = newInt;
if (x < array.GetLength(0) - 1)
array = fill(array, (x + 1), y, initialInt, newInt);
if (x > 0)
array = fill(array, (x - 1), y, initialInt, newInt);
if (y < array.GetLength(1) - 1)
array = fill(array, x, (y + 1), initialInt, newInt);
if (y > 0)
array = fill(array, x, (y - 1), initialInt, newInt);
}
return array;
}
感谢您!