1

基本上我的第一个任务是将'0'的位置保存在一个整数中。使用标准数组非常简单。此代码循环遍历数组(大小:8),直到找到 0,然后将其保存为位置。请参见下面的代码:

ps:n 是对保存在其他地方的数组的引用。

int position = 0;
        this.nodesExpanded++;
        // Loop through the array to get the position of where '0' is
        for (int i = 0; i < n.getPuzzle().length; i++){
            if (n.getPuzzle()[i] == 0){
                position = i;
                break;
            }
        }

我的最终任务是使多维数组(大小:[3, 3])成为可能。所以这是我迄今为止创建的:

for (int x = 0; x < 3; x++)
        {
            for (int y = 0; y < 3; y++)
            {
                if (n.getPuzzle()[x,y] == 0)
                {
                    **position = ;**
                    break;
                }
            }//end y loop
        }//end x loop

那么如何将数组引用保存到某个位置的值呢?我猜“位置”需要是 int 以外的东西。

如果您需要更多说明,请务必发表评论,提前抱歉并谢谢您!

4

3 回答 3

2

您可以使用 aTuple来存储该位置。或者您可以创建自己的数据结构。

示例:最后您可以看到如何访问元组项。

var positions = new List<Tuple<int, int>>();

            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    if (n.getPuzzle()[x,y] == 0)
                    {
                        positions.Add(new Tuple<int, int>(x,y));
                        break;
                    }
                }//end y loop
            }//end x loop

            if(positions.Any())
            {
                var xpos = positions[0].Item1;
                var ypos = positions[0].Item2;
            }
于 2013-04-06T16:12:55.863 回答
0

我发现存储多维数组索引的一种自然方法是使用大小为维数的单维数组。

因此,如果您有一个object[,,] A和索引int[] i,您将使用表达式索引到 A 中A[i[0],i[1],i[2]]

于 2013-04-06T16:26:53.830 回答
0

它的工作方式与您的一维数组相同,但您需要保留两个位置值。我int在示例中使用了 s,但您可能希望使用自定义结构或元组(如 AD.Net)所说。

int xpos = -1;
int ypos = -1;
for (int x = 0; x < 3; x++)
{
    for (int y = 0; y < 3; y++)
    {
        if (n.getPuzzle()[x,y] == 0)
        {
            xpos = x;
            ypos = y;
            break;
        }
    }//end y loop
}//end x loop
if (!(xpos > -1 && ypos > -1)) ; // 0 was not found
于 2013-04-06T16:47:34.510 回答