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. JVM垃圾回收那些事

    Java这种VM类跨平台语言比起C++这种传统编译型语言很大的区别之一在于引入了垃圾自动回收机制.自动垃圾回收大大提高了Java程序员的开发效率并且极大地减少了犯错的概率,但终归而言由于无法像C++程 ...

  2. C# 知识点笔记:IEnumerable<>的使用,利用反射动态调用方法

    IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...

  3. Visual Studio 添加 自定义 路径宏

    在编辑VS工程包含路径和库路径时,有时需要添加第三方包的路径,比如c++ boost库, 为了协作的方便,不合适直接把本地绝对路径添加入工程设置,此时可以添加自定义路径宏, 然后参与协作的每个开发人员 ...

  4. java指定运行jar包中的其中一个main方法

    java -cp jar包 类名 java -cp ******.jar com.******.EsEtl

  5. JAVA程序员成长路线图

    https://www.cnblogs.com/godtrue/p/4283708.html

  6. 5.java动态代理、反射

    1.java动态代理.反射(IDEA导入JUnit4) 1.1.反射 通过反射的方式可以获取class对象中的属性.方法.构造函数等 1.2.反射代码 import java.io.Serializa ...

  7. MFC Bitmap::FromBITMAPINFO返回空问题

    领导临时给了一个任务,项目上的一个问题,就是FromBITMAPINFO不成功,之前也没有弄过MFC的东西,但领导让干就干吧.咱也不知道怎么回事,咱也不敢问. 上来直接度娘,试过各种办法,都没与解决, ...

  8. 报错:required string parameter XXX is not present

    报错:required string parameter XXX is not present 不同工具发起的get/delete请求,大多数不支持@RequestParam,只支持@PathVari ...

  9. Oracle之:Function :dateToNumber()

    create or replace function dateToNumber(i_date in date) return number is result number ; begin resul ...

  10. @Value和@ConfigurationProperties

    1.@Value用法 https://blog.csdn.net/u010832551/article/details/73826914 2.@ConfigurationProperties用法 ht ...