实现图片编辑软件的“填充颜色”功能
2014-11-17 11:22
253 查看
题目:《程序员面试金典(第5版)》P232
编写函数,实现许多图片编辑软件都支持的“填充颜色”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色填入这个店的周围区域,知道原来的颜色值全部都改变。
提示:以一个二维整数数组matrix模拟屏幕,每一个整数值代表一种颜色。
编写函数,实现许多图片编辑软件都支持的“填充颜色”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色填入这个店的周围区域,知道原来的颜色值全部都改变。
提示:以一个二维整数数组matrix模拟屏幕,每一个整数值代表一种颜色。
void PaintFillCore(vector<vector<int>> &matrix,int x,int y,int before,int color) { if(x<0 || x>=matrix.size() || y<0 || y>=matrix[0].size() || color==matrix[x][y] || before!=matrix[x][y]) return; matrix[x][y]=color; //和一个点相邻的点最多可以有八个,需要改变颜色的点最多有八个,这里只挑选上下左右4个点进行变化即可。 PaintFillCore(matrix,x-1,y,before,color);//上 PaintFillCore(matrix,x+1,y,before,color);//下 PaintFillCore(matrix,x,y-1,before,color);//左 PaintFillCore(matrix,x,y+1,before,color);//右 } //matrix为代表屏幕的二维数组,x为点的行号,y为点的列号,color为新的颜色值 void PaintFill(vector<vector<int>> &matrix,int x,int y,int color) { //若输入的二维数组和行号列号不合法,则返回。若该点的颜色值和新的颜色值一致,则返回。 if(matrix.empty() || matrix[0].empty() || x<0 || x>=matrix.size() || y<0 || y>=matrix[0].size() || color==matrix[x][y]) return; int before=matrix[x][y]; matrix[x][y]=color; //和一个点相邻的点最多可以有八个,需要改变颜色的点最多有八个,这里只挑选上下左右4个点进行变化即可。 PaintFillCore(matrix,x-1,y,before,color);//上 PaintFillCore(matrix,x+1,y,before,color);//下 PaintFillCore(matrix,x,y-1,before,color);//左 PaintFillCore(matrix,x,y+1,before,color);//右 }
相关文章推荐
- 实现许多图片编辑软件都支持的“填充颜色”功能
- 9.9递归和动态规划(七)——实现许多图片编辑软件都支持的“填充颜色”功能
- 9.9递归和动态规划(七)——实现很多图片编辑软件都支持的“填充颜色”功能
- 编写函数,实现许多图片编辑软件都支持的“填充颜色”功能
- ASP.NET jQuery 食谱25 (使用jQuery UI的Autocomplete方法实现文本框的自动搜索填充功能)
- Winform中代码Dialog控件实现(打开,保存,改变字体,颜色,打印功能)
- QT4实现信号灯随时间变化颜色的功能
- 用唯一的颜色id编号实现OpenGL选择功能(OpenGL Selection Using Unique Color IDs )
- 实现审核状态显示,选中行颜色变化功能。
- c#实现打印功能,可以设置纸张大小,字体和颜色等
- JXCELL实例学习与研究(三) 之 EXCEL实现复选框 与 选择区域填充颜色
- 实现listbox颜色改变和画分割符的功能
- 创建一个如下的窗体,并在窗体上放置colorDialog控件。实现功能:1)程序运行时,单击打开颜色对话框按钮,可选择颜色,并以所选颜色作为窗体背景色
- GridView 同时 实现鼠标经过颜色,鼠标离开恢复原颜色不变,鼠标单击与双击功能,
- 面试题-实现空余部分填充颜色
- NOPCommerce 增加功能 颜色和尺码管理研究实现<九>
- 全新:js实现Dreamweaver中颜色选择器的功能,如果你曾经为此烦恼,来看看吧!
- 【转】C# 实现完整功能的截图控件(2)-实现颜色和字体选择控件
- C#中代码Dialog控件实现(打开,保存,改变字体,颜色,打印功能)