【发布时间】:2018-09-29 22:04:20
【问题描述】:
我有 5 X 5 矩阵,其中 1 代表土地,0 代表水。需要创建一个函数,该函数将遍历矩阵并返回它找到的土地数量。对角线 1 需要忽略。
我被我的程序卡住了。非常感谢您的帮助。
var arr = [
[1, 1, 0, 1, 0],
[1, 1, 0, 1, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 1, 1]
];
我写了一个函数,它使用上面的矩阵来找到土地的数量。
function findLand(arr) {
var check = [],
cntr = 0;
for(let i=0 ;i<arr.length; i++) {
check = [];
traverse(i, 0);
}
function traverse(x, y) {
if(x<0 || y<0 || x > arr.length-1 || y > arr[0].length-1) {
return;
}
if(arr[x][y]!=1 || check.indexOf(x+'_'+y)!=-1) {
return;
}
check.push(x+'_'+y);
traverse(x, y+1);
traverse(x, y-1);
traverse(x-1, y);
traverse(x+1, y);
}
}
findLand(matrix)
【问题讨论】:
-
你期待什么?
-
您是在寻找组的数量还是只是总土地(个数)?
-
您好,感谢您的回复。函数应该返回的是 1 的数量,在上面的矩阵中,我们有 3 个土地。
-
return check.length;也许? -
是 1 的个数是 3
标签: javascript recursion flood-fill