Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >泛洪时出现Stackoverflow错误

泛洪时出现Stackoverflow错误
EN

Stack Overflow用户
提问于 2014-01-04 16:22:36
回答 2查看 288关注 0票数 0

我试图在连接的二进制图像区域上实现泛洪填充,但是我得到了StackOverflow错误。此外,如何使用不同的颜色对每个区域进行着色。

谢谢

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public  void FloodFill(int x, int y)
{
    Bitmap bitmap = (Bitmap)pictureBox1.Image;

    if ((x < 0) || (y < 0) || (x >= bitmap.Width) || (y >= bitmap.Height)) { return; }

    Color cl = bitmap.GetPixel(x, y); // error An unhandled exception of type 'System.StackOverflowException' occurred in System.Drawing.dll

    if ((cl.R != 255) || (cl.G != 255) || (cl.B != 255)) { return; }
    if ((cl.R == 255) && (cl.G == 255) && (cl.B == 255)) {
        bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 0, 0));
    }
    FloodFill(x, y - 1);
    FloodFill(x + 1, y - 1);
    FloodFill(x + 1, y);
    FloodFill(x + 1, y + 1);
    FloodFill(x, y + 1);
    FloodFill(x - 1, y + 1);
    FloodFill(x - 1, y);
    FloodFill(x - 1, y - 1);
}
for (int i = 0; i < pictureBox1.Width; i++)
{
    for (int j = 0; j < pictureBox1.Height; j++) {
        Point p = new Point(i, j);
        FloodFill(p.X, p.Y);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-01-04 17:48:45

PMF是正确的;您应该为此使用迭代算法。

迭代算法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Fill(coordinate)
    stack = new Stack<Coordinate>()
    stack.Push(coordinate)
    while !stack.IsEmpty
        current = stack.Pop();
        if bitmap[current] is not white then continue
        bitmap[current] = black
        stack.Push(current.NorthNeighbour)            
        stack.Push(current.SouthNeighbour)
        etc.

你明白这是怎么回事了吗?这个想法是,不是使用调用堆栈作为临时存储,而是实际分配您自己的堆栈。

票数 4
EN

Stack Overflow用户

发布于 2014-01-04 17:38:44

我猜这个问题与递归的顺序有关。在最坏的情况下,您将(几乎)首先处理整个图像的深度。递归的深度可以与图像中的总像素一样深。

假设我们从10x10图像的左下角开始。最初的几个步骤是:

我们递归地输入第一个堆栈深度(x,y-1),直到y=0堆栈深度,下一步我们可以做的是FloodFill(x+1,y),直到x= 9,y=0堆栈深度19

  • Backtracking,下一步是FloodFill(x-1,y),直到x= 1,y=0,=> stack depth 27

  • 现在是我们第一次需要在堆栈中向上移动超过一层。

因此,您需要的堆栈大小至少为图像的2*width+2*height -上面只是一个快速分析。这可能太多了。

建议:使用迭代算法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20923478

复制
相关文章
替代jquery1.9版本以前的toggle事件函数(开关)
以上文章为转载自http://blog.sina.com.cn/s/blog_50042fab0101c7a9.html var flag=1; $(".selector").click(function(){ if(flag==1){ //执行方法; flag=0; }else{ //执行方法; flag=1; } 或者外接函数,例如 toggle(obj
蓓蕾心晴
2018/04/12
8490
jquery + Bootstrap : data-toggle="popover"鼠标放上去显示悬浮层 Tips
jquery鼠标放上去显示悬浮层 Tips html <div class="input-group-addon" style="border: 0;"> <a id="time_range_fa" href="#" class="fa fa-info-circle col-sm-1" style="color: #3c8dbc;font-size: 14px;" data-toggle="popover" data-pl
一个会写诗的程序员
2018/08/17
2.4K0
jquery + Bootstrap : data-toggle="popover"鼠标放上去显示悬浮层 Tips
自己写的一个类似于jQuery中的toggle函数
自己写的一个类似于jQuery中的toggle函数 这是HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>公共测试页</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript
用户1719978
2018/07/05
7070
bootstrap menu dropdown toggle
<nav class="navbar navbar-default" role="navigation">
用户5760343
2022/01/10
8190
bootstrap menu dropdown toggle
Bootstrap 中: data-toggle 与 data-target 的作用
如上例子中的 button,Bootstrap 为这个元素都绑定了特定事件,覆盖了这些元素原本的行为,
微风-- 轻许--
2019/05/26
11K0
求助 | toggle rate的计算
internal power 跟switch power 的计算都需要知道toggle rate,但是即使读了activty 文件,在文件中也只有输入port、寄存器、memory 这些cell的翻转信息,内部的组合逻辑都是传播计算得到的。static toggle rate 应该只与组合逻辑的输入pin 的toggle rate, probability 和逻辑的功能相关。有谁知道静态toggle rate的计算公式?谷歌找了一些资料,简单的都只说到transition probability的计算;复杂的都涉及到dynamic toggle rate的计算,会把glitch 的因素考虑在内。
老秃胖驴
2019/09/16
2.9K1
求助 | toggle rate的计算
js与jQuery的区别以及jQuery选择器和方法的使用
jQuery是什么:jQuery是JavaScript的类库,封装了很多js代码。类似java中的类库一样里面一个类中有很多别人写好的功能。90%以上的公司都在用jQuery。
天蝎座的程序媛
2022/11/18
15.4K0
js与jQuery的区别以及jQuery选择器和方法的使用
jQuery(function(){})与(function(){})(jQuery)的区别
一、先看 jQuery(function(){ }); 全写为 jQuery(document).ready(function(){ }); 意义为在DOM加载完毕后执行了ready()方法。 二、再看 (function(){ })(jQuery); 其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。 三、总结 jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,
java达人
2018/01/31
8770
论功耗 | 如何计算toggle rate
先吐个槽,数字前端AE 生存环境实属恶劣,按理说AE 只要解决工具端的问题即可,可现实中经常被揪住讨论SDC 如何设置,power 估算该用哪个corner, toggle rate 如何算这些很难概论的问题。周二在某司,某位老兄打了一大叠IEEE 文章在研读toggle rate 计算的问题,兴致勃勃得来找老驴讨论,听完该兄叙述,老驴深深陷入一团迷雾中,于是发文《求助 | toggle rate的计算》求助广大驴友。感谢驴群2.0 的@if 同学,感谢驴群1.0 的@剩凉菜、@刚刚、@白菜王国,感谢驴友@DragonBaby 糖糖、@the1ne. 在以上同学的帮助下,老驴又研读了一些资料,总结于此。
老秃胖驴
2019/09/16
6.4K1
论功耗 | 如何计算toggle rate
Jquery和Ajax
1、  ajax基础知识(http://www.0377joyous.com/archives/484.html) 2、  load()函数示例代码 <button id=”send”>触发</but
苦咖啡
2018/05/07
1.2K0
零基础入门 17: UGUI Toggle
很久没更,最近公司的手游准备二测,加上蛮牛上教程的同步更新,所以一直到现在才开始恢复公众号的内容更新。之后会在游戏蛮牛和公众号上同步更新。
韩东吉
2018/10/19
1.9K0
零基础入门 17: UGUI  Toggle
JavaWeb——JQuery之基本概述与快速入门实践总结(JQuery各版本区别、JQuery对象和JS对象的区别与转换)
JQuery实际是JavaScript的一个框架,可以用来简化JS的开发。截取下百度百科给出的概念:
Winter_world
2020/09/25
8700
JavaWeb——JQuery之基本概述与快速入门实践总结(JQuery各版本区别、JQuery对象和JS对象的区别与转换)
vue与jquery混用_vue怎么使用jquery
有时候只要想到要用的 vue.js 的时候就会惯性的想起用vue-cli手脚架搭建一个项目,但是有时候的业务场景并不适合用vue-cli手脚架,这个时候使用vue+jquery混合使用,把他们的优点结合起来使用会大大提升开发效率。
全栈程序员站长
2022/11/07
1.4K0
jquery与vue区别_学jquery还是vue
1,vue 是一个前端框架,jquery 是javacript库,封装了一些js常用的方法,仅此而已。vue有成熟的生态链,mvvm模式,是一个真正的web框架。 表现在: 1:vue有固定的写法和规定,必须要有一个div来作为容器,绑定事件方法,数据都有固定的地方,数据要写在data里面,方法要写在methods里面。而且绑定事件在dom 元素标签上绑定 ,防止时间太多,找不到元素对应的绑定事件不好调试
全栈程序员站长
2022/11/07
4630
jQuery.extend与jQuery.fn.extend
1.jQuery.fn.extend用于扩展jQuery.prototype对象,可以采用这种方式为jQuery添加自定义方法
johnhuster的分享
2022/03/26
5270
jquery和vue冲突吗_jquery和vue的区别
一个h5项目同时引用了vue.js和jquery.js, 发现jquery绑定的事件失效。
全栈程序员站长
2022/11/08
1.4K0
jQuery动画与ajax
1: jQuery $(document).ready()与window.onload的区别? Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕 . 2.编写个数不同 window.onload不能同时编
小胖
2018/06/27
2.8K0
jquery插件与扩展
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统。这好比大公司们争相做平台一样,得平台者得天下。苹果,微软,谷歌等巨头,都有各自的平台及生态圈。
诺浅
2020/08/21
2.3K0
jQuery onload与ready
jQuery是一种流行的JavaScript库,用于简化在网页中操作和处理HTML文档的过程。在jQuery中,有两个常用的事件处理方法,即$(document).ready()和$(window).on("load", function()),用于在页面加载时执行JavaScript代码。这两种方法在特定情况下有所不同。
堕落飞鸟
2023/05/18
7860
JavaScript与jQuery获取元素的宽、高和位置
今天汇总整理了 JavaScript 和 jQuery 获取元素宽高和位置的方法,比较全面,方便自己和需要并搜到此文章的朋友们查看。
德顺
2019/11/13
3.1K0

相似问题

JQUERY Toggle和Ajax

30

将Toggle和Click函数与JQuery相结合

11

jQuery Toggle div和类

33

Jquery菜单和Logo Toggle

21

jQuery toggle();

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文