CCF-CSP题解 201512-3 画图
画图时思路应该清晰一点。我是将坐标\((x,y)\)映射到\(canvas[y][x]\)上。
连线注意\(+\)号的情况,填充写好\(dfs\)就好了。
#include <bits/stdc++.h>
const int maxn = 100;
using namespace std;
int m, n, q;
char canvas[maxn + 5][maxn + 5];
int vis[maxn + 5][maxn + 5];
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
void dfs(int x, int y, char c)
{
if (vis[y][x])
return;
vis[y][x] = 1;
canvas[y][x] = c;
for (int i = 0; i <= 3; i++)
{
int xx = x + dir[i][0], yy = y + dir[i][1];
if (xx >= 0 && xx <= m - 1 && yy >= 0 && yy <= n - 1 &&
canvas[yy][xx] != '|' && canvas[yy][xx] != '-' && canvas[yy][xx] != '+')
dfs(xx, yy, c);
}
}
int main()
{
scanf("%d%d%d", &m, &n, &q);
for (int i = 0; i <= n - 1; i++)
for (int j = 0; j <= m - 1; j++)
canvas[i][j] = '.';
while (q--)
{
int op;
scanf("%d", &op);
if (op == 0)
{
int x1, y1, x2, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
if (x1 == x2)
{
for (int i = min(y1, y2); i <= max(y1, y2); i++)
{
if (canvas[i][x1] == '-' || canvas[i][x1] == '+')
canvas[i][x1] = '+';
else
canvas[i][x1] = '|';
}
}
else
{
for (int i = min(x1, x2); i <= max(x1, x2); i++)
{
if (canvas[y1][i] == '|' || canvas[y1][i] == '+')
canvas[y1][i] = '+';
else
canvas[y1][i] = '-';
}
}
}
else
{
int x, y;
char c[2];
scanf("%d%d%s", &x, &y, c);
memset(vis, 0, sizeof(vis));
dfs(x, y, c[0]);
}
}
for (int i = n - 1; i >= 0; i--)
{
for (int j = 0; j <= m - 1; j++)
printf("%c", canvas[i][j]);
printf("\n");
}
return 0;
}
CCF-CSP题解 201512-3 画图的更多相关文章
- CCF CSP 201409-2 画图
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-2 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y ...
- CCF CSP 201512-3 画图
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201512-3 画图 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ...
- CCF CSP 201703-3 Markdown
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...
- CCF CSP 201312-3 最大的矩形
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...
- CCF CSP 201609-3 炉石传说
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
- CCF CSP 201709-4 通信网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...
- CCF CSP 201409-3 字符串匹配
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...
- CCF CSP 201503-3 节日
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-3 节日 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形 ...
- CCF CSP 201509-2 日期计算
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? ...
随机推荐
- this绑定方式总结
最近在回顾js的一些基础知识,把<你不知道的js>系列又看了一遍,this始终是重中之重,还是决定把this相关知识做一个系统的总结,也方便自己日后回顾. this的四条绑定规则 1.默认 ...
- SpringSecurity退出功能实现的正确方式
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能.其实这是一个非常简单的功能,我见过很多的程序员在使用了Spring Security之后, ...
- 结合RBAC模型讲解权限管理系统需求及表结构创建
在本号之前的文章中,已经为大家介绍了很多关于Spring Security的使用方法,也介绍了RBAC的基于角色权限控制模型.但是很多朋友虽然已经理解了RBAC控制模型,但是仍有很多的问题阻碍他们进一 ...
- 用图解&&实例讲解php是如何实现websocket实时消息推送的
WebSocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. 以前的推送技术使用 Ajax 轮询,浏览器需要不断地向服务器发送http请求来获取最新的数据,浪费很多的带 ...
- 【NHOI2018】扫雷完成图
[题目描述] 扫雷游戏完成后会显示一幅图,图中标示了每个格子的地雷情况.现在,一个 n * n 方阵中有 k 个地雷,请你输出它的扫雷完成图. [输入数据] 输入共 k+1 行: 第 1 行为 2 个 ...
- vue通过控制boolean值来决定是否添加class类名
vue通过控制boolean值来决定是否添加class类名
- 简单入门Kubernetes
什么是Kubernetes 官网 https://kubernetes.io/ 中文版:https://kubernetes.io/zh/ 个人理解 基于容器技术 分布式架构 弹性伸缩 隔离物理机 和 ...
- 【黑客基础】Windows PowerShell 脚本学习(上)
视频地址:[黑客基础]Windows PowerShell 脚本学习 2019.12.05 学习笔记 1.$PSVersionTable :查看PowerShell的版本信息. 2.PowerShel ...
- Scala: Case classes
Case classes are like regular classes with a few key differences which we will go over. Case classes ...
- 使用IDEA2017.3.5搭建SSM框架
转载自博客园,附上原文地址https://www.cnblogs.com/hackyo/p/6646051.html?utm_source=itdadao&utm_medium=referra ...