ccf 201512-3 画图(90)

  1. #include<iostream>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int maxn = +;//最大的行数 ,列数
  6. char square[maxn][maxn];
  7. bool visit[maxn][maxn];
  8. int m,n,q;//m为列数,n为行数
  9. const int dr[] = {-,,,};//上,左,下,右
  10. const int dc[] = {,-,,};
  11. bool inside(int x,int y)
  12. {
  13. return x>= && x<n && y>= && y<m;
  14. }
  15. void paintLine()
  16. {
  17. int x0,y0,x1,y1;
  18. cin>>x0>>y0>>x1>>y1;
  19. if(y0==y1)//画 - ,需要注意向右为x方向
  20. {
  21. for(int i=min(x0,x1);i<=max(x0,x1);i++)
  22. {
  23. if(square[y0][i] == '|') square[y0][i] = '+';
  24. else square[y0][i] = '-';
  25. }
  26. }
  27. else if(x0 == x1)//画| 。需要注意向左为y方向
  28. {
  29. for(int i=min(y0,y1);i<=max(y0,y1);i++)
  30. {
  31. if(square[i][x0] == '-') square[i][x0] = '+';
  32. else square[i][x0] = '|';
  33. }
  34. }
  35. }
  36.  
  37. void paintChar(int x,int y,char c)
  38. {///使用dfs
  39. if(square[x][y] == '|' || square[x][y] == '-' || square[x][y] == '+')
  40. {
  41. return;
  42. }
  43. square[x][y] = c;
  44. visit[x][y] = ;
  45. for(int i=;i<=;i++)
  46. {
  47. if(inside(x+dr[i],y+dc[i]) && !visit[x+dr[i]][y+dc[i]])
  48. paintChar(x+dr[i],y+dc[i],c);
  49. }
  50. }
  51.  
  52. int main()
  53. {
  54. cin>>m>>n>>q;
  55. memset(square,'.',sizeof(square));
  56. for(int i=;i<q;i++)
  57. {
  58. int type;cin>>type;
  59. if(type == )//画线
  60. paintLine();
  61. else //使用dfs进行填充
  62. {
  63. memset(visit,,sizeof(visit));
  64. int x,y;char c;
  65. cin>>x>>y>>c;
  66. paintChar(y,x,c);
  67. }
  68. }
  69.  
  70. ///进行输出
  71. for(int i=n-;i>=;i--)
  72. {
  73. for(int j=;j<m;j++)
  74. cout<<square[i][j];
  75. cout<<endl;
  76. }
  77.  
  78. return ;
  79. }

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. Nginx访问限制配置

    Nginx访问限制配置 nginx访问限制可以基于两个方面,一个是基于ip的访问控制,另一个是基于用户的信任登陆控制 下面我们将对这两种方法逐个介绍 基于IP的访问控制 介绍: 可以通过配置基于ip的 ...

  2. java压缩下载图片并以zip流的形式下载到客户端

    /** * * @param page * @param rows * @param works * @return * @author ffwwzz 下载zip * @throws IOExcept ...

  3. Android Jetpack之WorkManager: 观察结果

    在使用WorkManager的时候,有时候需要关注任务执行的结果和状态,可以使用 LiveData<WorkInfo> liveOpStatus = WorkManager.getInst ...

  4. 最贵的AMD 7nm显卡来了!这设计 够狂野

    ROG STRIX系列配备三个风扇(支持智能启停).多条热管.金属背板,厚度达2.5个插槽位,另有两个8针辅助供电,因此最大供电能力375W,必然会预先大幅超频,而且应该仍有手动超频空间,当然也少不了 ...

  5. Sass的混合-@mixin,@include

    1,无参数,有参数和带默认值参数的@mixin声明sass文件内容: //带参数,默认50@mixin opa($opa:50){ opacity: $opa / 100; filter:alpha( ...

  6. 关于VIM中展示二进制字符的操作

    在网上拷贝了一段代码放到linux下变异,发现每行的行首有一堆不可识别的字符.放到windows的notepad下发现也不是空格也不是tab,权当是某种不可识别的缩进字符把 解决方法  linux c ...

  7. vue.js 简介

    Vue.js是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层 ...

  8. go学习开篇

            我是做java开发的,从接触java开始算,已经8年了,为什么会想到学go语言呢?前端时间我一直在学习jvm,java的一些更底层的东西,梳理回顾时,感觉可以通过学习其他开发语言,来提 ...

  9. RobotFramework 截取中文中的数字比较时长

    先看下需求,这个报表中有个时长,需要对昨日和前日的时长进行比较,我们获取到的元素是例如“9分43秒”这样的格式 1.首先要讲中文中的分和秒分别提取出来 提取python代码如下: import res ...

  10. 【Winform-自定义控件】自定义Tab Control 带关闭符号(X)的标签页

    a form & a tabControl 思路: DrawMode设一定要设为OwnerDrawFixed 事件:Form_Load.tabControl1_DrawItem.tabCont ...