- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
因此,我正在编写一个 Bejeweled 克隆代码,但我的 flood fill 函数有一个错误。我有一个 15 x 15 的矩阵,由不同颜色的珠宝组成,我尝试计算填充的瓷砖数量。
函数在这里:
function count(x, y, color) {
if(matrix[x] && matrix[x][y]) {
if(matrix[x][y].color != color)
return;
cnt++;
count(x, y+1, color);
count(x, y-1, color);
count(x-1, y, color);
count(x+1, y, color);
console.log(cnt);
}
}
怎么了?
最佳答案
看起来您的问题是您的函数无法区分已计数的方 block 和未计数的方 block 。所以相邻的方 block 会一直互相计数。
一个解决方案是处理您的网格副本,并修改访问过的方 block 的颜色,这样它们就不会被再次计算。或者,您可以向每个单元格添加一个 counted
属性,并在您对单元格进行计数时设置它,如果您尝试对一个已经被计数过的单元格进行计数则返回。然后确保在完成后重置 counted
属性。
类似于:
function count(x, y, color) {
if(matrix[x] && matrix[x][y]) {
if(matrix[x][y].color != color || matrix[x][y].counted)
return;
cnt++;
matrix[x][y].counted = true;
count(x, y+1, color);
count(x, y-1, color);
count(x-1, y, color);
count(x+1, y, color);
console.log(cnt);
}
}
关于javascript - JavaScript 中的洪水填充算法 - 太多递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408961/
我有一个 3D 数组。在这个数组中,我想找到可以组合成更大元素的元素。矩形不能相互重叠。我最好先找到最大的矩形,但先到先得也不会错,尤其是在提高性能的情况下。 例如 1 0 0 0 1 0 0 0 0
这是使用 D3.js 和 topojson 的洪水 map 示例。 http://bl.ocks.org/cappelaere/6472064 https://gist.github.com/capp
首先声明一下,我不是 DevOp,所以我在 Linux 管理方面的经验有限。 我基本上遵循了这个操作方法 (https://cloud.google.com/monitoring/agent/inst
这不是出于黑客目的。我正在学习计算机科学,我只是好奇。 所以..当主机A向主机B发送TCP SYN时,主机B为接收缓冲区等分配空间,向主机A发送回SYNACK,主机A也分配这样的空间,然后向主机B发送
我正在使用这个插件 https://github.com/mozilla/rust-android-gradle ,这需要我添加 tasks.whenTaskAdded { task -> i
我是一名优秀的程序员,十分优秀!