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. 常用的Java工具类——十六种

    常用的Java工具类——十六种 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选 ...

  2. deep_learning_Function_One-host参数

    在很多机器学习任务中,特征并不总是连续值,而有可能是分类值.比如星期类型,有星期一.星期二.…….星期日,比如浏览器类型有["uses Firefox", "uses C ...

  3. 使用 jenkins 为 nginx 增加上下文

    每次需要在Nginx增加上下文,都需要添加如下两段 ​ server.conf upstream serverdownloadPage { server 10.11.19.6:3023; } ​ ht ...

  4. Python 学习第一天(二)python 入门

    1.第一个python程序 1.1 直接打印输出 打开cmd,输入python进入到python交互式环境:(看到>>>是在Python交互式环境下:) 在python交互环境下输入 ...

  5. Array 对象-sort()

    Array 对象-sort() sort方法对数组成员进行排序,默认是按照字典顺序排序.排序后,原数组将被改变. sort方法不是按照大小排序,而是按照字典顺序.也就是说,数值会被先转成字符串,再按照 ...

  6. numpy的ndarray数组如何reshape成固定大小

    在做肺结节检测的时候,遇到dicom文件reshape之后尺寸大小不一.因为大下不一,numpy.reshape又无法重塑成指定大小的.最后还是在一个大牛的代码中找到了解决方法. VL = np.lo ...

  7. python在pycharm中导包一直出错的问题

    之前的net在code的子目录中,怎么调试都无法解决.最后用一个简单粗暴的方式,将net直接拿到项目的根目录中.如此即可

  8. java 获取随机数的方法

    方法一: (数据类型)(最小值 + Math.random()*(最大值-最小值+1) ); 示例: (int)(1+Math.random()*(10-1+1)): 获取int类型 1-10的随机数 ...

  9. 回调函数c++类中实现

    https://blog.csdn.net/mrailence/article/details/52251201 https://blog.csdn.net/qq_14820081/article/d ...

  10. 【Winfrom-Panel】Panel隐藏与显示,自动隐藏菜单, Auto-Hide Menu

    设计界面:2个button,一个panel 当鼠标移动到btnHome时,显示menuPanel 当鼠标离开btnHome时,隐藏menuPanel 当btnPin箭头向左时,menuPanel为自动 ...