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

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

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

 #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. 几项有用的JQUERY代码

    检测IE浏览器 在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦.尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测.当然,以下片段亦可用于检测 ...

  2. yii2安装与初始化-Yii2学习笔记(一)

    一.安装项目: 使用composer下载安装yii2 advanced安装包: composer create-project yiisoft/yii2-app-advanced advanced(自 ...

  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. 微软的OneDrive研究~

    Dropbox 很好,唯一觉得不爽的是只能同步指定的目录.不过被墙之后就不那么方便了,所以改用微软的 Live Mesh,缺点是支持的设备少(仅 PC 和 Mac). https://technet. ...

  5. XmlDocument,XDocument相互转换

    XmlDocument,XDocument相互转换 using System; using System.Xml; using System.Xml.Linq; namespace MyTest { ...

  6. Binary Tree Level Order Traversal II 解答

    Question Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, ...

  7. Cuckoo hash算法分析

    一 基本思想: cuckoo hash是一种解决hash冲突的方法,其目的是使用简单的hash 函数来提高hash table的利用率,同时保证O(1)的查询时间 基本思想是使用2个hash函数来处理 ...

  8. category和extensions

    catgory 允许你为一个已经存在的类增加方法,而不需要增加一个子类.而且不需要知道它内部具体的实现. 另外,虽然Category不能够为类添加新的成员变量,但是Category包含类的所有成员变量 ...

  9. 求高精度幂(java)

    求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 对数值很大.精度很高的数进行高精度计算是一类十分常见的问题.比如,对国债进行计算就是属于这类问题. 现在要 ...

  10. qsort的几种用法

    #include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b){ return *(int ...