我有一个看起来像这样的数组
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的新手,我不知道如何开始这个。有人可以给我一些提示。
答案 0 :(得分:0)
board [xCord] [yCord] = ValueToInsert;
我可能误解了您的问题,所以这里有更多信息。
您可以将另一个数组“推”到1d数组中。
myArr.push([]);
然后按这样推送值:
myArr[Xcord].push(YValue);
答案 1 :(得分:0)
您需要创建一个函数来检查在xy坐标上放置一个后缀是否有效。该函数将检查该行,列或对角线中是否有王后。您还可以创建主函数的这三个子函数。
然后,当你完成循环时,对每个字段使用该函数,如果它返回true,则放置后。如果是假,继续前进。
当然,最终会有很多解决方案,所以您可能希望将所有这些解决方案保存/存储在一个数组中。
另外,想一想优化算法的方法:例如,如果你连续设置一个女王,那么就不需要检查该行中的任何其他字段等。
当你决定真正掌握自己的技能时,请尝试使用递归函数来生成解决方案。