问题标签 [flood-fill]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 洪水填充算法
又是周末了,这意味着我可以玩我的爱好项目。
我已经厌倦了手动创建测试关卡,所以我想我会从引擎开发中休息一下,并在关卡编辑器上工作:
关卡编辑器 http://gfilter.net/junk/Editor.JPG
我想在编辑器中实现一个洪水填充算法,它就像在绘画程序中一样工作。有没有人知道什么技术在这里对我有用?
关卡只是一个二维数组,因此可以认为它实际上与位图相同。
谢谢!
c++ - Blob ...如何以非递归方式编写
我已经使用递归编写了以下程序,但我不知道如何以非递归方式编写它。每次我运行我的非递归版本时,数字都会偏离。关于如何在没有递归的情况下编写以下方法的任何建议?
这是我尝试过的顺便说一句:
algorithm - 创建十六进制洪水难题的算法
我正在创建一个益智游戏,虽然可以手动玩简单的关卡,但要通过计算机程序来解决更难的关卡。拼图是六角板上的洪水填充。您可以在这里尝试原型。
(来源:hacker.org)
以下是拼图的工作原理:通过从顶部选择一种颜色,您从左上角的图块开始执行泛洪填充。这逐渐将电路板转换为纯色。挑战是在一定数量的动作中做到这一点。
我已经创建了几个类似的谜题,关键是使用一种算法来生成在不知道它们是如何创建的情况下难以解决的板。例如,在这里我们可以通过反转洪水填充来生产板:从实心板向后工作,直到它被取消淹没。我们知道这需要多少步,并且可以将其设置为解决方案的下限。
我面临的问题是,当我尝试这种方法时,我的上限太高了。即使通过随机移动,在这个移动次数内解决难题也变得微不足道。
一种不是解决方案的方法是生成一个随机棋盘,然后对其进行优化求解并将其设置为目标。关键是要创建一个谜题,其中最佳解决它是 NP 时间或至少是一个硬 P。
所以我正在寻找的是一种算法,它可以生成极其坚硬的电路板,随着它们变得越来越大,解决它们成为一个严峻的挑战。
c - 用 C 编写的有效的非递归填充算法?
我一直在试图找到一个有效的洪水填充算法。在我尝试过的许多算法中,只有“递归行填充”的一种行为完全符合其应有的行为,主要的警告是它偶尔会破坏堆栈。:(
我已经尝试了许多我发现的非递归实现,它们都异常喜怒无常:它们要么在奇怪的地方留下空隙,要么淹没整个区域(当它们应该被封闭时)。
任何人都有一个用 C (或不太严重的 OOP 并且我可以很容易地解开)编写的非递归洪水填充工作源代码?
c - 这个洪水填充算法有什么问题?
我一直在使用基于堆栈的非递归类型的填充算法,它似乎工作得很好,除了一个恼人的情况:如果使用一条线将图像切成两半,然后填充一半,它会淹没整个图像!但是,只有当我没有在图像周围放置“边框”时才会发生这种情况。如果我绘制一个封装图像的矩形(即在图像上放置边框),那么它可以正常工作。所以很明显代码的边界查找方面有问题,但我一辈子都找不到问题。(希望)比我更敏锐的人能发现问题吗?这让我疯狂!(ps语言是C)
iphone - 在 OpenGL ES (Cocos2d-iphone) 中绘制单个像素的最有效方法
我正在编写一个洪水填充算法......它需要绘制单个像素。最快的方法是什么?一开始我想用cocos2d的drawpoint,但是320 * 480个顶点听起来不太好。有没有使用 memset 之类的更快的方法?
algorithm - 如何最佳解决洪水填充难题?
我喜欢玩益智游戏 Flood-It,可以在线玩:
https://www.lemoda.net/javascript/flood-it/game.html
它也可以作为 iGoogle 小工具使用。目的是用最少数量的连续洪水填充来填充整个电路板。
我正在尝试编写一个可以最佳解决这个难题的程序。解决这个问题的最佳方法是什么?理想情况下,我想使用A*算法,但我不知道估计剩余步数的函数应该是什么。我确实编写了一个程序,该程序进行了深度 4 蛮力搜索以最大化填充区域。它工作得相当好,在解决难题方面击败了我,但我对那个算法并不完全满意。
有什么建议么?提前致谢。
c++ - 填补OpenCV中的漏洞
我有一个从OpenCV中的边缘检测模块中提取的边缘图(canny edge detection)。我想要做的是填补边缘图中的洞。
我正在使用C++和OpenCV库。在 OpenCV 中有一个cvFloodFill()函数,它将用种子填充孔洞(其中一个位置开始泛滥)。但是,我试图在不知道种子的情况下填充所有内部孔。(类似于MATLAB中的imfill() )
Q1:如何找到所有的种子,以便我可以应用'cvFloodFill()'?
Q2:如何实现'imfill()'等价物?
OpenCV中的新手,任何提示都表示赞赏。
c - 洪水填充算法
我正在使用 turbo C++ 在 C 语言中的一个简单图形库中工作,因为我正在开发一个非常原始的绘画风格程序版本,一切都很好,但我无法让洪水填充算法工作。我使用 4 路洪水填充算法,首先我尝试使用递归版本,但它只适用于小区域,填充大区域使其崩溃;阅读我发现实现它的显式堆栈版本可以解决问题,但我并没有真正看到它。
我开发了一个这样的堆栈:
这是我对洪水填充功能所做的代码:
但它仍然不起作用,当我试图填充大面积区域时它会停止,因为我在我的程序中使用分辨率 640 X 480 这真的是个问题;任何想法为什么它不起作用?