2020-/National_Java_B/B
小藍在一張無限大的特殊畫布上作畫,
這張畫布可以看成一個方格圖,每個格子可以用一個二維的整數坐標表示,
小藍在畫布上首先點了一下幾個點:(0, 0), (2020, 11), (11, 14), (2000, 2000),
只有這幾個格子上有黑色,其它位置都是白色的,
每過一分鐘,黑色就會擴散一點,具體的,如果一個格子里面是黑色,它
就會擴散到上、下、左、右四個相鄰的格子中,使得這四個格子也變成黑色
(如果原來就是黑色,則還是黑色),
請問,經過 2020 分鐘后,畫布上有多少個格子是黑色的,
解題思路:
2020分鐘也就是走了2020步,在這2020步內,如果平面上的某個點可以在2020步內走到已知的四個點的其中一個,那么這個點就是黑色的,也就是點與點之間的距離問題,根據曼哈頓距離公式,三層for回圈,一層if判斷,最后得到結果,
(但是超級慢…我運行了得有50s左右…hlja)
代碼:
xy = [[0, 0], [2020, 11], [11, 14], [2000, 2000]]
count = 0
for i in range(-2020, 4041):
for j in range(-2020, 4021):
for k in range(0, 4):
if (abs(i-xy[k][0]) + abs(j-xy[k][1])) <= 2020:
count += 1
break
print('畫布上有{}個格子是黑色的'.format(count))
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256383.html
標籤:python
上一篇:Python基礎與拾遺2:Python中的字串與字串格式化
下一篇:Markdown部分基本語法
