ccf 201512-3 画图(90)

 #include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = +;//最大的行数 ,列数
char square[maxn][maxn];
bool visit[maxn][maxn];
int m,n,q;//m为列数,n为行数
const int dr[] = {-,,,};//上,左,下,右
const int dc[] = {,-,,};
bool inside(int x,int y)
{
return x>= && x<n && y>= && y<m;
}
void paintLine()
{
int x0,y0,x1,y1;
cin>>x0>>y0>>x1>>y1;
if(y0==y1)//画 - ,需要注意向右为x方向
{
for(int i=min(x0,x1);i<=max(x0,x1);i++)
{
if(square[y0][i] == '|') square[y0][i] = '+';
else square[y0][i] = '-';
}
}
else if(x0 == x1)//画| 。需要注意向左为y方向
{
for(int i=min(y0,y1);i<=max(y0,y1);i++)
{
if(square[i][x0] == '-') square[i][x0] = '+';
else square[i][x0] = '|';
}
}
} void paintChar(int x,int y,char c)
{///使用dfs
if(square[x][y] == '|' || square[x][y] == '-' || square[x][y] == '+')
{
return;
}
square[x][y] = c;
visit[x][y] = ;
for(int i=;i<=;i++)
{
if(inside(x+dr[i],y+dc[i]) && !visit[x+dr[i]][y+dc[i]])
paintChar(x+dr[i],y+dc[i],c);
}
} int main()
{
cin>>m>>n>>q;
memset(square,'.',sizeof(square));
for(int i=;i<q;i++)
{
int type;cin>>type;
if(type == )//画线
paintLine();
else //使用dfs进行填充
{
memset(visit,,sizeof(visit));
int x,y;char c;
cin>>x>>y>>c;
paintChar(y,x,c);
}
} ///进行输出
for(int i=n-;i>=;i--)
{
for(int j=;j<m;j++)
cout<<square[i][j];
cout<<endl;
} return ;
}

ccf 201512-3 画图(90)的更多相关文章

  1. CCF CSP 201409-2 画图

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-2 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y ...

  2. CCF CSP 201512-3 画图

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201512-3 画图 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ...

  3. CCF系列之画图(201409-2)

    试题编号: 201409-2试题名称: 画图时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从 ...

  4. [原]OpenGL基础教程(四)VBO+纹理绘制四边形

    工程下载地址:http://pan.baidu.com/s/1ntr7NHv 提取码:yf1h 一.本文牵扯知识点梳理: (1)VBO (2)纹理 (3)libpng(加载png) (4)shader ...

  5. CCF 201512-3 画图 (DFS搜索+模拟)

    问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术.例如,下图是用 ASCII 字符画出来的 CSPRO 字样. ..____.____..____. ...

  6. CCF 201712-4 90分

    90分,不知道错在哪里了,dijkstra算法,用一个数组的d[i]表示以i点结尾的小路的长度,以i点为中心扩展时,若下一点为k,如果i->k是小路,则 d[j] = d[k]+M[k][j]; ...

  7. CCF 201409-2 画图 (暴力)

    问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的例子.第一个矩形是 ...

  8. CCF真题之画图

    201409-2 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的 ...

  9. ccf画图

    问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的例子.第一个矩形是 ...

随机推荐

  1. 【Day1】3.数据类型

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  2. Zookeeper01——zk的基本信息和安装

    一.Zookeeper的基本信息 1.1背景 无论在前面,我们学习hdfs,还是学习redis集群,我们都会使用到一个zookeeper进行选举.这导致了Redis的产生. 我们知道,在先前我们使用Z ...

  3. selenium+chromedriver+python3 不加载图片

    from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs={} chrome_opt.add_ex ...

  4. QTP(16)

    一.QTP项目(ECShop) 1.ECShop是一个开源免费的一个B2C的电子商务系统,主要用于商家和顾客进行商品交易操作. 2.ECShop分为前台和后台两个子系统: (1)ECShop前台:顾客 ...

  5. MyBatis 分页插件PageHelper 后台报错

    今天遇到一个问题,使用MyBatis 分页插件PageHelper 进行排序分页后,能正常返回正确的结果,但后台却一直在报错 net.sf.jsqlparser.parser.ParseExcepti ...

  6. hivesql-一个表中的数据不在另一个表中

    如何最有效的判断 一个表中的数据不在另一个表中 两个方法一个是join 另一个是 exist 方法

  7. BZOJ 2809: [Apio2012]dispatching(可并堆 左偏树板题)

    这道题只要读懂题目一切好说. 给出nnn个点的一棵树,每一个点有一个费用vvv和一个领导力aaa,给出费用上限mmm.求下面这个式子的最大值ax∗∣S∣ ( S⊂x的子树, ∑iv[i]≤m )\la ...

  8. HDU-3336-Count the string(扩展KMP)

    链接: https://vjudge.net/problem/HDU-3336 题意: It is well known that AekdyCoin is good at string proble ...

  9. Redis和Memcache区别

    1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供li ...

  10. git回退错误的提交

    提交代码导致冲突,执行merge后,冲掉其他人的提交.需要reset,并新建分支进行恢复 解决方法: 1.找到最后一次提交到master分支的版本号,即[merge前的版本号] 2.会退到某个版本号 ...