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 ...
随机推荐
- 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释
参考:http://blog.csdn.net/ysuncn/article/details/1749729
- 【C#学习笔记】窗口隐藏、最小化、最大化、正常化
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- DB2之隔离级别和锁的论述
在DB2数据库中, 是通过行级锁和表级锁协调作用来提供较好的并发性, 同时保证数据库中数据的安全. 在DB2中缺省情况下使用行级锁(当然需要IS/IX锁配合),只有当出现锁资源不足, 或者是用命令指定 ...
- hdu 2473 Junk-Mail Filter(并查集_虚节点)2008 Asia Regional Hangzhou
感觉有些难的题,刚开始就想到了设立虚节点,但是实现总是出错,因为每次设立了虚节点之后,无法将原节点和虚节点分开,导致虚节点根本无意义. 以上纯属废话,可以忽略…… 题意—— 给定n个点(0, 1, 2 ...
- DevExpress z
1.TextEditor(barEditItem)取文本 string editValue = barEditItem1.EditValue.ToString(); //错误,返回null st ...
- HDU5758 Explorer Bo 树形dp
我是参考这一篇写的:http://blog.csdn.net/fsss_7/article/details/52049474 一点感想:dp[i][0]代表以这个点为根的且总叶子数为偶数个叶子的答案 ...
- 《Python核心编程》 第三章 Python基础 - 练习
创建文件: # -*- coding: gbk -*- #! /auto/ERP/python_core/chapter ''' Created on 2014年5月21日 @author: user ...
- Tcpcopy简介与实战
码农博客 即将到期,现将博客中部分文章转载到博客园.本文发表与2012年,基于tcpcopy 0.6版本.转载时略有删减. Tcpcopy简介 TCPCopy是一种请求复制(所有基于tcp的packe ...
- cocos2d-x 添加背景音乐和音效-SimpleAudioEngine
首先,要想使用音效,需要启用音效引擎库CocosDenshion中的SimpleAudioEngine类, #include "SimpleAudioEngine.h" Cocos ...
- 你是怎么理解“MVC”的
MVC就是三个字母的组合,M-模型, V-视图, C-控制器. 这些在百度上随便一索就可以索到,而且网上对这三个部分的解释又过于笼统,使人没法完全理解MVC的含义. 这里我简单的谈谈我对MVC这三 ...