0

我有一个看起来像这样的数组

    board = [
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0]
             ];

有什么办法,只需使用2个for循环,就像这样

    for(var i = 0; i < 7; i++){
        for(var j = 0; j < 7; j++){
            //actions here
        }
    }

放置 6 个值 1,第一个值 1 替换数组中的第一个 0,接下来的 5 个使用与在棋盘上放置皇后相同的规则放置。结果应该是这样的

    board = [
                [1, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 1, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 1 ,0, 0, 0],
                [0, 1, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 1, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 1, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0],
                [0, 0, 0, 0, 0 ,0, 0, 0]
             ];

我是 javascript 新手,我不知道如何开始。有人可以给我一些提示。

4

2 回答 2

0

您需要创建一个函数来检查在 xy 坐标上放置女王是否有效。该函数将检查该行、列或对角线中是否有皇后。您还可以将这三个子功能设为主功能。

然后,当您遍历循环时,对每个字段使用该函数,如果它返回 true,则放置皇后。如果是假的,请继续。

当然,最终会有很多解决方案,因此您可能希望将它们全部保存/存储在一个数组中。

另外,考虑优化算法的方法:例如,如果您在一行中设置了一个皇后,则无需检查该行中的任何其他字段,等等。

当您决定真正提高自己的技能时,请尝试使用递归函数来生成解决方案。

于 2013-10-11T10:39:55.640 回答
0

板[xCord][yCord] = ValueToInsert;

我可能误读了你的问题,所以这里有更多信息。

您可以将另一个数组“推入”一维数组。

myArr.push([]);

然后你像这样推送值:

myArr[Xcord].push(YValue);
于 2013-10-08T20:07:34.813 回答