题目:
程序说明:
当我看到题目的第一感觉是觉得此题程序会很复杂,可能我真的有点菜,但是仔细观察,题中的黑点扩散只是在上下左右方向,由此可以想到曼哈顿距离(曼哈顿距离也叫出租车距离,用来标明两个点在标准坐标系上的绝对轴距总和,d=|x2-x1| + |y2-y1| )。先定于三个枚举对象i,j,k,i 表示任意点的x值(因为是无限大的画布,由此x轴可以为负数,范围是-2020到4040,y轴同理),j 表示任意点的y值,k表示已知点的x,y的索引,因为题中问2020分钟以后黑点的情况,就是任意两点之间的距离只要小于或等于2020,这个点能够在2020步内走到,那一定能被染黑,由此这里使用了if判断语句,若满足则黑色点的个数加一,为了避免重复,当满足条件时加入一次后便退出循环。
全部代码:
x=[0,2020,11,2000]
y = [0, 11, 14, 2000]
count=0
for i in range(0-2020,2020+2020+1):
for j in range(0-2020,2000+2020+1):
for k in range(4):
if abs(x[k]-i)+abs(y[k]-j) <=2020:
count+=1
break
print(count)