用python来解PAT乙级1066图像过滤-15-满分无超时
题意大概就是给出m*n的像素组,将其中A-B范围内的换成一个指定的像素值,A,B和指定的像素值都在输入的第一行给到,并且输出全部为三位的像素值
在接收输入之后,直接开始for循环遍历,然后将A-B范围内的像素值换掉并且全部换成三位数值
刚开始我是建了个函数来把数值变成三位字符串,提交发现超时了,代码是这样的:
m , n , A , B , change = map(int,input().split())
def san(n):
if len(str(n)) == 3:
return str(n)
else:
s = str(n).rjust(3,'0')
return s
res = []
for i in range(m):
l = list(map(int,input().split()))
for j in range(n):
if A <= l[j] <= B:
l[j] = san(change)
else:
l[j] = san(l[j])
res.append(l)
for k in res:
print(' '.join(k))
然后把函数去掉了,直接在替换的时候在前置位补上0,这样:
m , n , A , B , change = map(int,input().split()) change = '0'*(3-len(str(change))) + str(change) res = [] for i in range(m): l = input().split() for j in range(n): if A <= int(l[j]) <= B: l[j] = change else: l[j] = '0'*(3-len(l[j])) + l[j] res.append(l) for k in res: print(' '.join(k))
提交结果:
耗时还是有点长。。。