问题描述
试题编号: | 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坐标)。 |
m,n,q=map(int,input().split())
photo=[['.' for i in range(m)]for j in range(n)]
def dfs(x,y,s):
if x>=0 and x<=m-1 and y<=-1 and y>=-n:
if photo[y][x]!='|'and photo[y][x]!='-' and photo[y][x]!='+' and photo[y][x]!=s:
photo[y][x]=s
dfs(x+1,y,s)
dfs(x,y+1,s)
dfs(x-1,y,s)
dfs(x,y-1,s)
def line(x1,y1,x2,y2):
if x1==x2:
for i in range(min(y1,y2),max(y1,y2)+1):
if photo[i][x1]=='-' or photo[i][x1]=='+':
photo[i][x1]='+'
else:
photo[i][x1]='|'
else:
for i in range(min(x1,x2),max(x1,x2)+1):
if photo[y1][i]=='|' or photo[y1][i]=='+':
photo[y1][i]='+'
else:
photo[y1][i]='-'
for i in range(q):
num=input().split()
if num[0]=='1':
dfs(int(num[1]),-int(num[2])-1,num[3])
else:
line(int(num[1]),-int(num[2])-1,int(num[3]),-int(num[4])-1)
for i in photo:
print(''.join(i))
用的广度优先搜索,在测试最后一个用例时会报运行错误,RecursionError: maximum recursion depth exceeded。
后续寻找100分代码再更新。。。