如何轻松获取二维数组中的上一个(和下一个)项目?我知道您可以使用以下方法进行迭代:
for (byte x = 0; x < grid.GetLength(0); x++)
{
for (byte y = 0; y < grid.GetLength(1); y++)
{
//Here I should get previous item if certain bool returns false
}
}
我能做到y--
。但是如果行y
中的第一个元素x
呢?然后y = (getLength(1) -1)
和x--
。这对我来说看起来有点复杂:s
由于我的数组具有自定义类型“字段”的元素,因此我尝试使用以下代码创建一个 previousField 属性:
Field previousField = null;
foreach (Field field in this.Grid)
{
field.PreviousField = previousField;
previousField = field;
}
但是,这不适用于“for”循环迭代。因为我现在正在迭代两种完全不同的方式><。我不知道如何创建一个 nexField 属性。
那么,如何创建 nextField 属性?如果不可能,我如何通过我的数组来回迭代?我确实需要一个数组,因为我需要在代码的其他部分使用索引。
编辑:示例;
我正在使用回溯算法制作数独。二维数组表示网格(例如 9x9)。所以我遍历数组,插入随机数字(利用乐观,'这应该没问题',否则,我们将返回并更改)。
插入数字时,我验证数字是否正确(在块、行和列中唯一)。我尝试所有可能的数字(1-9)。如果没有正确的数字,那么我可能在前一个单元格中出错了(所以我回溯)。如果那里没有有效数字,则再次转到上一个字段。如果找到一个有效数字,那么我再次转到下一个数字。