9.9递归和动态规划(七)——实现许多图片编辑软件都支持的“填充颜色”功能
2015-08-12 13:22
363 查看
/**
* 功能:实现许多图片编辑软件都支持的“填充颜色”功能。
* 给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色填入这个店的周围区域,知道原来的颜色值全都改变。
*/
* 功能:实现许多图片编辑软件都支持的“填充颜色”功能。
* 给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色填入这个店的周围区域,知道原来的颜色值全都改变。
*/
/** * 思路:假设要对一个像素(比如红色)调用paintFill,即对周围的像素逐一调用paintFill, * 向外扩张,一旦碰到非红色的像素就停止填充。 * * 注意:碰到图像问题,要注意screen[y][x]中x和y的顺序。x表示水平轴(即自左向右),实际上对应于列数,而非行数。y的值等于行数。 * @param screen * @param x * @param y * @param ncolor * @return */ public static boolean paintFill(Color[][] screen,int x,int y,Color ncolor){ if(screen[y][x]==ncolor) return false; return paintFill(screen, x, y, screen[y][x], ncolor); } public static boolean paintFill(Color[][] screen,int x,int y,Color ocolor,Color ncolor){ if(x<0||x>=screen[0].length||y<0||y>=screen.length) return false; if(screen[y][x]==ocolor){ screen[y][x]=ncolor; paintFill(screen, x-1, y, ocolor, ncolor);//左 paintFill(screen, x+1, y, ocolor, ncolor);//右 paintFill(screen, x, y-1, ocolor, ncolor);//上!!! paintFill(screen, x, y+1, ocolor, ncolor);//下!!! } return true; }
enum Color{ Black,White,Red,Yellow,Green }
相关文章推荐
- stringstream的用法
- 数据库 表字段添加表情
- Ubuntu 14.04 DNS 配置
- phpcms中常用代码总结
- JMS activemq
- Bitmap 格式
- 黑马程序员——java常用基本类库String、包装类、异常总结
- linux 服务器/客户端 tcp通信的简单例子
- java基础学习总结——流
- OC的内存管理
- Java中的length字段和length()方法
- jQuery(7)jquery动画大体验
- PHP超时处理全面总结
- NM常用网络命令
- js继承精益求精之寄生式组合继承
- bat启动时设置JVM内存大小
- 手把手教你做iOS推送
- 9.9递归和动态规划(六)——打印n对括号的全部有效组合(即左右括号正确配对)
- Genymotion安卓模拟器
- 一文让你彻底了解iOS字体相关知识