试题编号: | 201512-3 |
试题名称: | 画图 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。 输入格式 第1行有三个整数m, n和q。m和n分别表示画布的宽度和高度,以字符为单位。q表示画图操作的个数。 输出格式 输出有n行,每行m个字符,表示依次执行这q个操作后得到的画图结果。 样例输入 4 2 3 样例输出 AAAA 样例输入 16 13 9 样例输出 ................ 评测用例规模与约定 所有的评测用例满足:2 ≤ m, n ≤ 100,0 ≤ q ≤ 100,0 ≤ x < m(x表示输入数据中所有位置的x坐标),0 ≤ y < n(y表示输入数据中所有位置的y坐标)。 |
问题分析:注意输入的x、y的坐标要比较大小。
#include <iostream>
using namespace std;
90
int m,n,q;
char s[102][102];
bool f(int a,int b,char c)
{
if(a<0||a==m||b<0||b==n||s[b][a]=='-'||s[b][a]=='|'||s[b][a]=='+'||s[b][a]==c)
{
return false;
}
s[b][a]=c;
f(a+1,b,c);
f(a-1,b,c);
f(a,b+1,c);
f(a,b-1,c);
}
int main()
{
cin>>m>>n>>q;
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
s[i][j]='.';
}
}
while(q--)
{
int op;
cin>>op;
if(op==0)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
if(a==c)
{
j=a;
if(b<d)
{
for(i=b;i<=d;i++)
{
if(s[i][j]!='-')
{
s[i][j]='|';
}
else
{
s[i][j]='+';
}
}
}
else
{
for(i=d;i<=b;i++)
{
if(s[i][j]!='-')
{
s[i][j]='|';
}
else
{
s[i][j]='+';
}
}
}
}
else if(b==d)
{
i=b;
if(a<c)
{
for(j=a;j<=c;j++)
{
if(s[i][j]!='|')
{
s[i][j]='-';
}
else
{
s[i][j]='+';
}
}
}
else
{
for(j=c;j<=a;j++)
{
if(s[i][j]!='|')
{
s[i][j]='-';
}
else
{
s[i][j]='+';
}
}
}
}
}
else if(op==1)
{
int a,b;
char c;
cin>>a>>b>>c;
f(a,b,c);
}
}
for(i=n-1;i>=0;i--)
{
for(j=0;j<m;j++)
{
cout<<s[i][j];
}
cout<<endl;
}
return 0;
}