在一定大小的像素图像中,将同色区域的颜色值替换为其他颜色值,从而产生新的图像,输入数据,图像大小,指定的像素点坐标,要替换成的颜色。

一开始出队操作写错了折腾半天,当队列中只有一个元素是出队后要将队首指针指向队尾指针。

取定初始位置的坐标后,在此位置上下左右搜索,将满足要求的位置入队,然后经过此一层循环后,取出队首元素,替换颜色,然后再根据该点上下左右搜索。

 #include <iostream>
#include <cstdlib>
using namespace std;
struct point
{
int x;
int y;
};
struct squeue
{
point data;
squeue *next;
};
struct sq
{
squeue *front;
squeue *rear;
}; //坐标
void initqueue(sq *s) /*队列初始化*/
{
squeue *q;
q=new squeue; /*设定队列头部*/
s->front=q;
s->rear=q;
q->next=NULL;
}
int isempty(sq *s)
{
if(s->front==s->rear)
return ;
return ;
}
int enqueue(sq *s,point e)
{
squeue *q;
q=new squeue;
q->data=e;
q->next=NULL;
s->rear->next=q;
s->rear=q;
}
int ouqueue(sq *s,point &e)
{
if(isempty(s))
return ;
else
{
squeue* p=(s->front)->next;
e=p->data;
s->front->next=p->next;
if(s->rear==p) //当要删除的是队尾元素时,要将队尾指针指向队首指针
s->rear=s->front;
free(p);
return ;
}
}
void pixel_transform(int a[][],int m,int n,int x0,int y0,int newcolor)
{
sq s;
initqueue(&s);
point q,temp;
int c=a[x0][y0]; /*取出旧的颜色*/
q.x=x0,q.y=y0;
enqueue(&s,q);
while(isempty(&s)==)
{
ouqueue(&s,temp);
q=temp;
a[q.x][q.y]=newcolor;
if(q.x->=&&a[q.x-][q.y]==c)
{
temp.x=q.x-;
temp.y=q.y;
enqueue(&s,temp);
}
if(q.x+<=m-&&a[q.x+][q.y]==c)
{
temp.x=q.x+;
temp.y=q.y;
enqueue(&s,temp);
}
if(q.y->=&&a[q.x][q.y-]==c)
{
temp.x=q.x;
temp.y=q.y-;
enqueue(&s,temp);
}
if(q.y+<=n-&&a[q.x][q.y+]==c)
{
temp.x=q.x;
temp.y=q.y+;
enqueue(&s,temp);
}
}
}
int main()
{
int i,j;
int a[][]={
,,,,,
,,,,,
,,,,,
,,,,,
,,,,
};
pixel_transform(a,,,,,);
for(i=;i<;i++)
{
for(j=;j<;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
return ;
}

像素转换问题-队列解决办法(或者dfs)的更多相关文章

  1. ie63像素bug原因及解决办法不使用hack

    1.浮动元素后边跟不浮动元素时会产生3像素bug 2.解决办法是不要忘记给浮动元素的相邻元素加上浮动.

  2. BeanUtils.populate()空字符串转换日期的解决办法

    我们在使用beanutils.populate()封装参数时,如果封装的字符串是空,在转换成date时会出现以上异常,此时可以在工具类中添加静态代码块即可解决:注意导入beanutils 包 impo ...

  3. div内的img下出现几像素的空白间距解决办法

    现象描述: 解决方法: 1.设父元素的font-size:0; 2.设img为display:block; 3.设img为vertical-align:middle;

  4. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  5. 安卓activity之间值共享解决办法,tabhost之间共享父类值,字符串类型的转换,获取每一个listview的item

    1.tabhost父类值共享的解决办法 dianzhanliebiao.java是传值页面,zhuyemian.java放的是tabhost,dianzhangaikuang.java是tabhost ...

  6. 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法

    例子:(报错了) public DateTime? time { get; set; } time = item.HospOutDate.HasValue ? DateTime.Parse(item. ...

  7. wordpress4.4+版本自动生成一个768w像素缩略图的解决办法

    4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还 ...

  8. 工作总结 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法 object——Nullable<T> (可空类型)

    可空值类型 备注     一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值. 默认情况下,所有都引用类型,如String,是否可以为 null, ...

  9. .Net内存泄露原因及解决办法

    .Net内存泄露原因及解决办法 1.    什么是.Net内存泄露 (1).NET 应用程序中的内存 您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆.这里我们需 ...

随机推荐

  1. zabbix之1监控概念

    1.通过通用的snmp监控,无需代理端 2.通过snmp代理 snmp代理的工作原理:在被监控端设置代理,代理不断的获取本地数据,而管理端定期通过代理获取监控数据. snmp目前有v1,v2,v3三种 ...

  2. 最短路(Dijkstra模板题)

    就不写题目链接了 Sample Input 5 5 点个数a,边个数b 1 2 20 点,点,权值 2 3 30 3 4 20 4 5 20 1 5 100 求出1到a的最短距离 Sample Out ...

  3. HDU 2266 How Many Equations Can You Find(DFS)

    How Many Equations Can You Find Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  4. query通用开源框架

    Jquery通用开源框架之[ejq.js] 简介 ejq是一款非常小巧的JS工具库,未压缩才50K,在jquery的基础上对jquery缺失部分作了很好的弥补作用. 优点: 1.具有内置的模板解析引擎 ...

  5. Linux释放内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

  6. KEIL CRACK及 0xFD Bug修正方法

    0xFD Bug是keil编译器中始终存在,而又从未得到官方修复的一个BUG!!! BUG描述:当C源代码中使用了汉字等非ASCII字符,而此字符的编码又恰好包含了大于或等于0xFD的字节时,这个字节 ...

  7. C# json Helper

    using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Comm ...

  8. java数组复制的方式和效率比较

    java中,数组的复制有以下三种方式: 1. 调用System.arraycopy(Arrays.copyOfRange可以当作第四种,但是底层调用的是System.arraycopy,所以,认为是同 ...

  9. Grunt制作个人博客简集

    原文:http://www.gbtags.com/gb/share/4916.htm GitHub地址:http://yansm.github.io/fromone/

  10. Windows7&IIS7.5部署Discuz

    IIS CGI一定要安装 IIS 网站中添加关联程序 ,添加默认文档 http://www.cnblogs.com/ajunForNet/archive/2012/09/12/2682063.html