Solution:

dfs

对于dfs:

//遇到map[u][v]==c,则不用再搜
    //因为通过(u,v)到达的其它点(p,q),
    //之前从(u,v)开始肯定能到达(p,q),(p,q)已经被填充了

注意:

if (map[x1][i]=='-' || map[x1][i]=='+')
                        map[x1][i]='+';
                    else
                        map[x1][i]='|';

不要写成了

if (map[x1][i]=='-')
                        map[x1][i]='+';
                    else
                        map[x1][i]='|';

如果原来是‘+’,加了一竖仍是’|'

 #include <stdio.h>
#include <stdlib.h>
#define maxm 102
#define maxn 102 char map[maxm][maxn],c;
long m,n; void dfs(long x,long y)
{
//遇到map[u][v]==c,则不用再搜
//因为通过(u,v)到达的其它点(p,q),
//之前从(u,v)开始肯定能到达(p,q),(p,q)已经被填充了
map[x][y]=c;
if (x!= && map[x-][y]!=c && map[x-][y]!='|'
&& map[x-][y]!='-' && map[x-][y]!='+')
dfs(x-,y); if (x!=m- && map[x+][y]!=c && map[x+][y]!='|'
&& map[x+][y]!='-' && map[x+][y]!='+')
dfs(x+,y); if (y!= && map[x][y-]!=c && map[x][y-]!='|'
&& map[x][y-]!='-' && map[x][y-]!='+')
dfs(x,y-); if (y!=n- && map[x][y+]!=c && map[x][y+]!='|'
&& map[x][y+]!='-' && map[x][y+]!='+')
dfs(x,y+);
} int main()
{
long x1,y1,x2,y2,x,y,q,l,i,j,mode,temp;
scanf("%ld%ld%ld",&m,&n,&q);
for (i=;i<m;i++)
for (j=;j<n;j++)
map[i][j]='.';
for (l=;l<=q;l++)
{
scanf("%ld",&mode);
if (mode==)
{
scanf("%ld%ld%ld%ld",&x1,&y1,&x2,&y2);
if (x1==x2)
{
if (y1>y2)
{
temp=y1;
y1=y2;
y2=temp;
}
for (i=y1;i<=y2;i++)
if (map[x1][i]=='-' || map[x1][i]=='+')
map[x1][i]='+';
else
map[x1][i]='|';
}
else
{
if (x1>x2)
{
temp=x1;
x1=x2;
x2=temp;
}
for (i=x1;i<=x2;i++)
if (map[i][y1]=='|' || map[i][y1]=='+')
map[i][y1]='+';
else
map[i][y1]='-';
}
}
else
{
scanf("%ld %ld %c",&x,&y,&c);
//从(x,y)开始能到达的点
dfs(x,y);
}
}
for (i=n-;i>=;i--)
{
for (j=;j<m;j++)
printf("%c",map[j][i]);
printf("\n");
}
return ;
}
/*
16 13 9
0 3 1 12 1
0 12 1 12 10
0 12 10 3 10
0 3 10 3 1
0 5 6 10 6
0 10 6 10 8
0 10 8 5 8
0 5 8 5 6
1 5 4 A
*/

拓展:
矩形填充颜色

1.
x,y范围很大,如0~10000000
Solution:离散化

2.
很多组数据,如100000000组数据,但但x,y范围较小
逆推,一个位置的值为最后一个填充的值

csp20151203画图 解题报告和易错地方的更多相关文章

  1. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  2. ZOJ_3950_How Many Nines 解题报告及如何对程序进行测试修改

    The 17th Zhejiang University Programming Contest Sponsored by TuSimple Solution: #include <stdio. ...

  3. CYJian的水题大赛2 解题报告

    这场比赛是前几天洛谷上 暮雪﹃紛紛dalao的个人公开赛,当时基本上都在水暴力分......也没有好好写正解(可能除了T1) 过了几天颓废的日子之后,本蒟蒻觉得应该卓越一下了qwq,所以就打算写一个解 ...

  4. USACO Section1.4 Arithmetic Progressions 解题报告

    ariprog解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  5. USACO Section1.2 Transformations 解题报告

    transform解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  6. LeetCode :1.两数之和 解题报告及算法优化思路

    最近开始重拾算法,在 LeetCode上刷题.顺便也记录下解题报告以及优化思路. 题目链接:1.两数之和 题意 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 ...

  7. Codeforces Round 662 赛后解题报告(A-E2)

    Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...

  8. 【九度OJ】题目1177:查找 解题报告

    [九度OJ]题目1177:查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1177 题目描述: 读入一组字符串(待操作的),再读入 ...

  9. 【九度OJ】题目1444:More is better 解题报告

    [九度OJ]题目1444:More is better 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1444 题目描述: ...

随机推荐

  1. websocket(二)——基于node js 的同步聊天应用

      https://github.com/sitegui/nodejs-websocket 1.用node搭建本地服务 npm install nodejs-websocket var ws = re ...

  2. 软工个人作业-博客作业-WEEK2

    1.是否需要代码规范:    (1)这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西.        首先来说,从短期上和个体上来看,一个团队的代码风格必然会在一定程 ...

  3. C++编写四则运算生成程序

    1.计划方案 按照预定计划,在时限为一周时,完成该程序所需时间大致如下表: PSP2.1 Personal Software Process Stages Time Planning 计划 · Est ...

  4. 20135327--linux内核分析 实践二

    内核模块编译 1.实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率很高,但可扩展性 ...

  5. junit4实验报告

    一:题目简介 测试一个加.减.乘.除. 二:源码的github链接 https://github.com/wangyuefang/test/blob/master/daiceshilei.md htt ...

  6. 战神答题APP 无敌结束版

    APP发布了哦~~     多多捧场~ http://anzhuoyuan.com/app/info/appid/242381.html 还有github https://github.com/784 ...

  7. Windows 7 64位安装cURL

    安装cURL. 1, 下载64位的SSL版cURL,网址: http://curl.download.nextag.com/download/curl-7.21.7-win64-ssl-sspi.zi ...

  8. PAT 1031 查验身份证

    https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392 一个合法的身份证号码由17位地区.日期编号和 ...

  9. Vert.x简介

    https://vertx.io/ https://vertx.io/download/ https://baike.baidu.com/item/Vert.x 近年来,移动网络.社交网络和电商的兴起 ...

  10. OneZero第七周第一次站立会议(2016.5.9)

    1. 时间: 12:15--12:25  共计10分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...