藍橋杯 擴散(Python實現)

2021-10-18 19:17:17 字數 1858 閱讀 3474

題目:

小藍在一張無限大的特殊畫布上作畫。

這張畫布可以看成乙個方格圖,每個格仔可以用乙個二維的整數座標表示。

小藍在畫布上首先點了一下幾個點:(0, 0), (2020, 11), (11, 14), (2000, 2000)。

只有這幾個格仔上有黑色,其它位置都是白色的。

每過一分鐘,黑色就會擴散一點。具體的,如果乙個格仔裡面是黑色,它

就會擴散到上、下、左、右四個相鄰的格仔中,使得這四個格仔也變成黑色

(如果原來就是黑色,則還是黑色)。

請問,經過 2020 分鐘後,畫布上有多少個格仔是黑色的。

看到這道題的時候就想到了之前在力扣上寫的一道題就是(斜槓劃分得那個),先是建立乙個足夠大的由零組成得圖,然後再把1當作變黑得格仔,統計1的個數作為結果。但是寫完了之後**跑不出來,後來自己把資料都改小了之後就能了。還有乙個人說他自己跑了兩個多小時還是四個小時跑出來了的,我沒等。。。

1、這個就是上面說的那個,我試了一下就兩個點然後只算兩分鐘之後的,我也數了一下匹配,但是資料量大的時候還是算了。

grid=

for x in

range

(10000):

[0for a in

range

(10000)]

)def

ans(y,x,count):if

0<=x<

10000

and0

<=y<

10000

and count!=

100:

grid[y]

[x]=

1 ans(y+

1,x,count+1)

ans(y-

1,x,count+1)

ans(y,x+

1,count+1)

ans(y,x-

1,count+1)

site=[[

0+2021,0

+2021],

[11+2021

,2020

+2021],

[14+2021,11

+2021],

[2000

+2021

,2000

+2021]]

for j in site:

ans(j[0]

,j[1],

0)result=

0for x in grid:

j=x.count(1)

result+=j

print

(result)

2、用了乙個叫曼哈頓距離的東西。

題目中的要求就是每一分鐘擴散乙個格仔,當從a點到達b點需要移動的格仔超過2020個的時候是不會被擴散到的。

site=[[

0,0]

,[2020,11

],[11

,14],

[2000

,2000]]

result=

0for y in

range(-

2021

,4021):

for x in

range(-

2021

,4041):

for s in site:

ifabs

(s[1

]-y)

+abs

(s[0

]-x)

<=

2020

: result+=

1break

print

(result)

結果:20312088

藍橋杯 擴散 Python

題目 小藍在一張無限大的特殊畫布上作畫。這張畫布可以看成乙個方格圖,每個格仔可以用乙個二維的整數座標表示。小藍在畫布上首先點了一下幾個點 0,0 2020,11 11 14 2000 2000 只有這幾個格仔上有黑色,其它位置都是白色的。每過一分鐘,黑色就會擴散一點。具體的,如果乙個格仔裡面是黑色,...

藍橋杯每日一題(21) 擴散(python)

小藍在一張無限大的特殊畫布上作畫。這張畫布可以看成乙個方格圖,每個格仔可以用乙個二維的整數座標表示。小藍在畫布上首先點了一下幾個點 0,0 2020,11 11,14 2000,2000 只有這幾個格仔上有黑色,其它位置都是白色的。每過一分鐘,黑色就會擴散一點。具體的,如果乙個格仔裡面是黑色,它 就...

藍橋杯 擴散 c語言暴力解法

小藍在一張無限大的特殊畫布上作畫。這張畫布可以看成乙個方格圖,每個格仔可以用乙個二維的整數座標表示。小藍在畫布上首先點了一下幾個點 0,0 2020,11 11,14 2000,2000 只有這幾個格仔上有黑色,其它位置都是白色的。每過一分鐘,黑色就會擴散一點。具體的,如果乙個格仔裡面是黑色,它就會...