直接模拟就行了,注意坐标系方向与平常数组不一样,填充操作用深搜和广搜都可以,这里用了广搜。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; struct point{
int x,y;
}; int m,n,q,dir[][] = {{,},{,-},{-,},{,}};
char a[][]; void line()
{
int x1,x2,y1,y2;
cin >> x1 >> y1 >> x2 >> y2;
if(x1 == x2)
{
int down = min(y1,y2),up = max(y1,y2);
for(int i = down;i <= up;i++)
{
if(a[i][x1] == '-' || a[i][x1] == '+') a[i][x1] = '+';
else a[i][x1] = '|';
}
}
else
{
int left = min(x1,x2),right = max(x1,x2);
for(int i = left;i <= right;i++)
{
if(a[y1][i] == '|' || a[y1][i] == '+') a[y1][i] = '+';
else a[y1][i] = '-';
}
}
} void bfs()
{
point start;
char str;
cin >> start.x >> start.y >> str;
a[start.y][start.x] = str;
queue<point> q;
q.push(start);
while(!q.empty())
{
int x = q.front().x,y = q.front().y;
q.pop();
for(int i = ;i < ;i++)
{
int xx = x+dir[i][],yy = y+dir[i][];
if(xx < || xx >= m || yy < || yy >= n || a[yy][xx] == '-' || a[yy][xx] == '|' || a[yy][xx] == '+' || a[yy][xx] == str) continue;
point temp;
temp.x = xx;
temp.y = yy;
q.push(temp);
a[yy][xx] = str;
}
}
}
int main()
{
cin >> m >> n >>q;
for(int i = ;i < n;i++)
{
for(int j = ;j < m;j++) a[i][j] = '.';
}
while(q--)
{
int flag;
cin >> flag;
if(flag) bfs();
else line();
}
for(int i = n-;i >= ;i--)
{
for(int j = ;j < m;j++) cout << a[i][j];
cout << endl;
}
return ;
}

CCF_ 201512-3_画图的更多相关文章

  1. CCF_ 201409-2_画图

    将一个数组比作画板,有颜色的位置标1,统计即可. #include<cstdio> #include<iostream> #define NUM 100 using names ...

  2. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

  3. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  4. matlab画图函数plot()/set/legend

    简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...

  5. 对Raphael画图标的一个jquery简单封装

    公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...

  6. java画图之曲线拖动

    目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...

  7. java画图之初体验

    1.实现画图程序所需的API类 JFrame JButton ActionListener              动作事件接口 ActionEvent                        ...

  8. 【JavaScript】操作Canvas画图

    1.页面添加 Canvas 标签 标签内可以写文字,浏览器不支持Canvas的情况下显示, 2.js获取 Canvas 标签 3.利用js函数画图,[线][图][文字] 源:http://www.li ...

  9. 用Canvas制作简单的画图工具

    今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...

随机推荐

  1. 百度地图开发API

    JavaScript API  http://lbsyun.baidu.com/index.php?title=jspopular

  2. 基于bootstrap的下拉选择 ( combox ) 输入 ( input ) 功能

    需求: 在编辑数据的时候,既可以让用户输入,也可以从下拉框中选择 思路: 参照下面的效果图,因为是表格里面的数据,所以下拉框触发按钮和输入框分别为1列,输入列可以设置是否输入(方法:<td co ...

  3. Android学习进度一

    在解决了电脑产生的一系列问题之后成功安装了Android Studio,并在其自带的手机模拟器上成功运行了第一个App(Hello World!),通过这个最简单的App研究了App基本的工程结构,为 ...

  4. Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件

    需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...

  5. 【C&数据结构】---关于链表结构的前序插入和后序插入

    刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...

  6. Python判断一个字符串是否包含某个指定的字符串

    成员操作符 in str = "string test string test" find1 = "str" find2 = "test" ...

  7. kafka(一)-为什么选择kafka

    作为开发人员,我们在选择一个框架或者工具时,我们都需要考虑些什么,我们不是头脑发热,一拍脑袋就它了,我们首先要认清这个框架或工具的作用是什么,能给我们带来什么样的好处,同时也要考虑带来什么样的负面结果 ...

  8. 实用代码|javaMail发送邮件(文末重磅资源!)

    每天进步一点点,距离大腿又近一步!阅读本文大概需要5分钟 JavaMail发送邮件,简单实用,了解一下呗~ 1.开启邮箱MAP/SMTP服务,获取第三方授权码 以QQ邮箱为例 2.主要代码 maven ...

  9. xlwings API Documentation

    http://docs.xlwings.org/en/stable/api.html Top-level functions xlwings.view(obj, sheet=None) Opens a ...

  10. 创建模仿存储库 Making a Mock Repository 精通ASP-NET-MVC-5-弗瑞曼 Listing 7-5