Diyelim ki böyle bir matrisimiz var:
11111
12221
12321
12221
11111
Bu matris bir alanı temsil eder ve her hücre bir arazinin bir bölümünü temsil eder. Her bir hücredeki sayı, arazinin bir kısmının yanıcılığına bağlı olarak (bir ölçüm biriminin gerekli olması halinde dakikalar içinde) tamamen yanması gereken zamanı gösterir . Eğer herhangi bir pozisyonda (hücre) bir ateş başlarsa, ateş bitişik hücrelere yayılmadan önce o hücrenin tamamen yanması gerekir (sadece yatay ve dikeydir, diyagonal değildir). Bu nedenle, eğer bir yangın merkezden başlatılıyorsa, yangının ihtiyacı:
11111 11111 11111 11011 10001 00000
12221 3 m. 12221 2 m. 12021 1 m. 11011 1 m. 00000 1 m. 00000
12321 -----> 12021 -----> 10001 -----> 00000 -----> 00000 -----> 00000
12221 12221 12021 11011 00000 00000
11111 11111 11111 11011 10001 00000
Açıklama:
- Ateş, yanma süresi 3 olan [2,2] 'de (0-tabanlı) başlar.
- 3 dakika sonra, [1,2], [2,1], [2,3], [3,2] yanmaya başlar.
- 2 dakika sonra, bu hücreler yanmaya başlar ve tüm bitişik hücrelere yayılır, ancak [0,2], [2,0], [2,4], [0,4] yakmak için sadece 1 dakika daha gerekir,
- 1 dakika sonra, bu hücreler yanar ve hücre, bitişik hücrelerine yayılır.
- 1 dakika sonra, 3. adımdaki hücrelerin geri kalanı yanmaya başlar ve ateş bitişik hücrelerine yayılır (zaten yanmış, yani hiçbir şey olmuyor).
- Son 1 dakika sonra, ateş tüm araziyi yakıyor.
Yani bu durumda çözüm 8 dakikadır. Ateş en üstteki hücrede başlarsa [0,0]:
11111 01111 00111 00011 00001 00000
12221 1 12221 1 02221 1 01221 1 00121 1 00011 1
12321 --> 12321 --> 12321 --> 02321 --> 01321 --> 00321 -->
12221 12221 12221 12221 02221 01221
11111 11111 11111 11111 11111 01111
00000 00000 00000 00000 00000
00000 1 00000 1 00000 1 00000 1 00000
00221 --> 00110 --> 00000 --> 00000 --> 00000
00221 00121 00020 00010 00000
00111 00011 00001 00000 00000
Yani şimdi toplam süre 10 dakikadır.
Meydan okuma
Her hücrenin tamamen tüketilmesi gereken zamanı temsil eden bir tamsayı değerine sahip bir NxM matrisi (N> 0, M> 0) göz önüne alındığında, bu matrisi alan en kısa program / işlevi ve ateşin başladığı konumda bir çift tamsayı yazın. ve yangının tüm araziyi tamamen tüketmesi için gereken süreyi döndürür / yazdırır.
- Her hücre pozitif (sıfır olmayan) bir yanma süresine sahip olacaktır. Hücreler için maksimum bir değer alamazsınız.
- Matrisin kare veya simetrik olması gerekmez.
- Matris, istediğiniz gibi 0 indeksli veya 1 indeksli olabilir.
- Konum, bir tamsayı dizisi içeren tek bir parametre, diğer makul formatta iki ayrı parametre olarak verilebilir.
- Matrisin boyutları giriş parametreleri olarak belirtilemez.
- Her ara basamağı, sadece istenen süreyi göstermeniz gerekmez. Ancak, adımların herhangi bir şekilde görselleştirildiğinden şikayet etmeyeceğim.
Başka bir örnek:
Fire starts at [1,1] (a '>' represents a minute):
4253 4253 4253 4153 4043 3033 2023 0001 0000
2213 > 2113 > 2013 > 1003 > 0002 > 0001 > 0000 >> 0000 > 0000
1211 1211 1211 1111 1001 0000 0000 0000 0000
Output: 9
Bu kod golf , yani her dil için en kısa programı kazanabilir!
1
içinM*N