像素转换问题-队列解决办法(或者dfs)
在一定大小的像素图像中,将同色区域的颜色值替换为其他颜色值,从而产生新的图像,输入数据,图像大小,指定的像素点坐标,要替换成的颜色。
一开始出队操作写错了折腾半天,当队列中只有一个元素是出队后要将队首指针指向队尾指针。
取定初始位置的坐标后,在此位置上下左右搜索,将满足要求的位置入队,然后经过此一层循环后,取出队首元素,替换颜色,然后再根据该点上下左右搜索。
#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)的更多相关文章
- ie63像素bug原因及解决办法不使用hack
1.浮动元素后边跟不浮动元素时会产生3像素bug 2.解决办法是不要忘记给浮动元素的相邻元素加上浮动.
- BeanUtils.populate()空字符串转换日期的解决办法
我们在使用beanutils.populate()封装参数时,如果封装的字符串是空,在转换成date时会出现以上异常,此时可以在工具类中添加静态代码块即可解决:注意导入beanutils 包 impo ...
- div内的img下出现几像素的空白间距解决办法
现象描述: 解决方法: 1.设父元素的font-size:0; 2.设img为display:block; 3.设img为vertical-align:middle;
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...
- 安卓activity之间值共享解决办法,tabhost之间共享父类值,字符串类型的转换,获取每一个listview的item
1.tabhost父类值共享的解决办法 dianzhanliebiao.java是传值页面,zhuyemian.java放的是tabhost,dianzhangaikuang.java是tabhost ...
- 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法
例子:(报错了) public DateTime? time { get; set; } time = item.HospOutDate.HasValue ? DateTime.Parse(item. ...
- wordpress4.4+版本自动生成一个768w像素缩略图的解决办法
4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还 ...
- 工作总结 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法 object——Nullable<T> (可空类型)
可空值类型 备注 一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值. 默认情况下,所有都引用类型,如String,是否可以为 null, ...
- .Net内存泄露原因及解决办法
.Net内存泄露原因及解决办法 1. 什么是.Net内存泄露 (1).NET 应用程序中的内存 您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆.这里我们需 ...
随机推荐
- Node.js how to respond to an upgrade request?
You just need to call socket.write with the appropriate HTTP syntax as plain text along these lines ...
- Linux下find与grep指令的相关用法
find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1. ...
- JS中的的Url传递中文参数乱码,如何获取Url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码:<script type=”text/javascript” ...
- js 属性类型
1.访问器属性 var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: ...
- scrollbarsstyle
android:scrollbarStyle属性及滚动条和分割线覆盖问题 本文主要介绍android view的android:scrollbarStyle属性意义android:scrollbarS ...
- Unique Binary Search Trees 解答
Question Given n, how many structurally unique BST's (binary search trees) that store values 1...n? ...
- UVA 11045-My T-shirt suits me(二分图匹配)
题意:有N件T恤,N是6的倍数,因为有6种型号,每种件数相同,有M个人,每个人有两种型号的T恤适合他,每个人可以挑其中的一种,问能否所有的人都能分配到T恤. 解析:典型的二分图匹配,每N/6为同种T恤 ...
- Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区
Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区 Python-memcached的基本使用 发表于3年前(2010-12-04 00:02) 阅读(9 ...
- Eclipse配置Maven开发环境
前言: 现在Eclipse版本越来越高.高版本的Eclipse甚至已经集成了Maven像是SpringSource的哪个版本.用习惯了Eclipse.在开发中还是不想更换掉自己的IDE.如此一来就又了 ...
- Kyoya and Colored Balls(组合数)
Kyoya and Colored Balls time limit per test 2 seconds memory limit per test 256 megabytes input stan ...