PC/UVa 题号: 110105/10267 Graphical Editor (图形化编辑器)题解
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<iterator>
#include<cstring>
#include<set>
using namespace std;
int m;
int n;
//bmp[y][x]
char bmp[251][251];
void swap_if_bigger(int& x, int& y)
{
if(x>y)
swap(x, y);
}
//I M N Creates a new table M×N. All the pixels are colored in white (O)
void create()
{
scanf("%d %d", &m, &n);
memset(bmp, 'O', sizeof(bmp));
}
//C Clears the table. The size remains the same. All the pixels became white (O).
void clear()
{
memset(bmp, 'O', sizeof(bmp));
}
//L X Y C Colors the pixel with coordinates (X,Y) in colour C.
void draw_pixel()
{
int x,y;
char color;
scanf("%d %d %c", &x, &y, &color);
bmp[y][x]=color;
}
//V X Y1 Y2 C Draws the vertical segment in the column X between the rows Y1 and Y2 inclusive in colour C.
void draw_ver_seg()
{
int x, y1, y2;
char c;
scanf("%d %d %d %c", &x, &y1, &y2, &c);
swap_if_bigger(y1, y2);
for(int y=y1;y<=y2;y++)
{
bmp[y][x]=c;
}
}
//H X1 X2 Y C Draws the horizontal segment in the row Y between the columns X1 and X2 inclusive in colour C.
void draw_hor_seg()
{
int x1, x2, y;
char c;
scanf("%d %d %d %c", &x1, &x2, &y, &c);
swap_if_bigger(x1, x2);
for(int x=x1;x<=x2;x++)
{
bmp[y][x]=c;
}
}
//K X1 Y1 X2 Y2 C Draws the filled rectangle in colour C. (X1,Y1) is the upper left corner, (X2,Y2) is the lower right corner of the rectangle.
void draw_rect()
{
int x1, y1, x2, y2;
char c;
scanf("%d %d %d %d %c", &x1, &y1, &x2, &y2, &c);
swap_if_bigger(x1, x2);
swap_if_bigger(y1, y2);
for(int x=x1;x<=x2;x++)
for(int y=y1;y<=y2;y++)
{
bmp[y][x]=c;
}
}
//F X Y C Fills the region with the colour C. The region R to be filled is defined as follows. The pixel (X,Y) belongs to this region. The other pixel belongs to the region R if and only if it has the same colour as pixel (X,Y) and a common side with any pixel which belongs to this region.
void _fill_region(int x, int y, char c)
{
char old_color=bmp[y][x];
if(old_color==c)
return;
bmp[y][x]=c;
static int direction[4][2]={
{-1, 0},
{1, 0},
{0, -1},
{0, 1},
};
for(int i=0;i<4;i++)
{
int nx=x+direction[i][0];
int ny=y+direction[i][1];
if(nx<1 || nx>m || ny<1 || ny>n)
continue;
if(bmp[ny][nx]==old_color)
{
// cout<<nx<<" "<<ny<<endl;
_fill_region(nx, ny, c);
}
}
}
void fill_region()
{
int x,y;
char c;
scanf("%d %d %c", &x, &y, &c);
_fill_region(x, y, c);
}
//S Name Writes the picture in the file Name.
void save()
{
string filename;
cin>>filename;
cout<<filename<<endl;
for(int y=1;y<=n;y++)
{
for(int x=1;x<=m;x++)
{
cout<<bmp[y][x];
}
cout<<endl;
}
}
int main()
{
char cmd;
char line[256];
while(cin>>cmd)
{
if(cmd=='X')
break;
switch(cmd)
{
case 'I':
create();
break;
case 'C':
clear();
break;
case 'L':
draw_pixel();
break;
case 'V':
draw_ver_seg();
break;
case 'H':
draw_hor_seg();
break;
case 'K':
draw_rect();
break;
case 'F':
fill_region();
break;
case 'S':
save();
break;
default:
gets(line);
continue;
}
}
return 0;
}
PC/UVa 题号: 110105/10267 Graphical Editor (图形化编辑器)题解的更多相关文章
- PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版
, '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorith ...
- PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)题解
#include <string> #include <iostream> #include <cstring> #include <algorithm> ...
- PC/UVa 题号: 110101/100 The 3n+1 problem (3n+1 问题)
The 3n + 1 problem Background Problems in Computer Science are often classified as belonging to a ...
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem E: Graphical Editor(模拟控制台命令形式修改图形)
Problem E: Graphical Editor Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2 Solved: 2[Submit][Statu ...
- ACM YTU 《挑战编程》第一章 入门 Problem E: Graphical Editor
Description Graphical editors such as Photoshop allow us to alter bit-mapped images in the same way ...
- uva题库爬取
每次进uva都慢的要死,而且一步一步找到自己的那个题目简直要命. 于是,我想到做一个爬取uva题库,记录一下其中遇到的问题. 1.uva题目的链接是一个外部的,想要获取https资源,会报出SNIMi ...
- Asp.Net Core 使用Monaco Editor 实现代码编辑器
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著 ...
- 天大acm 题号1002 Maya Calendar
Description 上周末,M.A. Ya教授对古老的玛雅有了一个重大发现.从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法.这 个Haab历 ...
- The Trip PC/UVa IDs: 110103/10137, Popularity: B, Success rate: average Level: 1
#include<cstdio> #include<iostream> #include<string> #include<algorithm> #in ...
随机推荐
- CSS HACK区别IE6、IE7、IE8、Firefox兼容性
相信不少人,都特别清楚CSS HACK,而其中也是区别IE6.IE7.IE8.Firefox兼容性问题用的,CSS hack由于不同的浏览器,对CSS的解析认识不一样,因此会导致生成的页面效果不一样. ...
- geusture for chrome cfg
{ "name": "Chrome Gestures", "version": "1.13.4", "norm ...
- 本博客迁移到Github,之后停止更新
本博客之后停止更新或者更新不是很及时,关注博客请移步 http://waylife.github.io 或者 http://blog.13kbook.com 谢谢支持. Update Time ...
- ArcMap自定义脚本工具制作
原文 ArcMap自定义脚本工具制作 在制图的前期,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧.如批量裁剪,虽然可以实现,但出来的结 ...
- Android中的音频播放(MediaPlayer和SoundPool)
Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放.暂停.停止.和重复播放等方法.该类位于android.media包下,详见API文档.其实除了这个类还有一 ...
- Matlab编程实例(4) 相位角与相关系数曲线
%相位角与相关系数曲线 close all; clear all; Samp1=200; %设置信号的采样精度 Samp2=200; %设置相位角p分割精度 A=10;%信号幅值 w=1;%信号角 ...
- codeforces 696B Puzzles 树形概率计算
题意:给一棵有根树,从根节点深搜,每次随机走,问每个点的dfs序的期望是多少 分析:对于每一个点,它的所有祖先节点dfs序肯定在它之前,它所在的子树的节点一定在它后面, 剩下的是既不是子树又不是祖先的 ...
- codeforces 687D Dividing Kingdom II 带权并查集(dsu)
题意:给你m条边,每条边有一个权值,每次询问只保留编号l到r的边,让你把这个图分成两部分 一个方案的耗费是当前符合条件的边的最大权值(符合条件的边指两段点都在一个部分),问你如何分,可以让耗费最小 分 ...
- Authentication with SignalR and OAuth Bearer Token
Authentication with SignalR and OAuth Bearer Token Authenticating connections to SignalR is not as e ...
- MockMvc和Mockito之酷炫使用
由于项目中需要添加单元测试,所以查询之后发现Mockito非常适合现在的web项目. 首先需要添加pom依赖: <dependency> <groupId>junit</ ...