สมมติว่าเรามีเมทริกซ์ดังนี้:
11111
12221
12321
12221
11111
เมทริกซ์นี้แสดงถึงภูมิประเทศและแต่ละเซลล์แสดงถึงส่วนของภูมิประเทศ จำนวนในแต่ละเซลล์หมายถึงเวลาที่เป็นส่วนหนึ่งของภูมิประเทศที่จะต้องมีการเผาไหม้สมบูรณ์ (นาทีถ้ามีหน่วยวัดเป็นสิ่งจำเป็น) ตามที่มันติดไฟ หากไฟเริ่มต้นที่ตำแหน่งที่กำหนด (เซลล์) เซลล์นั้นจะต้องถูกเผาอย่างสมบูรณ์ก่อนที่ไฟจะแพร่กระจายไปยังเซลล์ที่อยู่ติดกัน (แนวนอนและแนวตั้งเท่านั้นไม่ใช่แนวทแยงมุม) ดังนั้นหากเกิดเพลิงไหม้ขึ้นที่ตำแหน่งกึ่งกลางไฟจำเป็นต้องใช้:
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
คำอธิบาย:
- ไฟเริ่มต้นที่ [2,2] (อิง 0) ซึ่งมีระยะเวลาการเผาไหม้เป็น 3
- หลังจาก 3 นาที [1,2], [2,1], [2,3], [3,2] เริ่มไหม้
- หลังจาก 2 นาทีเซลล์เหล่านั้นจะสิ้นสุดการเผาไหม้และไฟจะแพร่กระจายไปยังเซลล์ที่อยู่ติดกันทั้งหมด แต่ [0,2], [2,0], [2,4], [0,4] ต้องการเพียง 1 นาทีในการเผาไหม้ดังนั้น
- หลังจาก 1 นาทีเซลล์เหล่านั้นจะถูกเผาและเซลล์จะแพร่กระจายไปยังเซลล์ที่อยู่ติดกัน
- หลังจากผ่านไปอีก 1 นาทีเซลล์ที่เหลือจากขั้นตอนที่ 3 การเผาไหม้และไฟจะแพร่กระจายไปยังเซลล์ที่อยู่ติดกัน (ซึ่งถูกเผาแล้วจึงไม่มีอะไรเกิดขึ้น)
- หลังจาก 1 นาทีที่ผ่านมาไฟก็จะไหม้พื้นที่ทั้งหมด
ดังนั้นวิธีแก้ปัญหาสำหรับกรณีนี้คือ 8 นาที หากไฟเริ่มต้นในเซลล์ซ้ายสุดด้านบน [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
ดังนั้นเวลาทั้งหมดคือ 10 นาที
ความท้าทาย
ให้ NxM matrix (N> 0, M> 0) ของค่าจำนวนเต็มที่แทนเวลาที่ทุกเซลล์ต้องใช้อย่างสมบูรณ์เขียนโปรแกรม / ฟังก์ชันที่สั้นที่สุดที่ใช้ matrix นั้นและจำนวนเต็มคู่กับตำแหน่งที่ไฟเริ่ม และส่งคืน / พิมพ์เวลาที่จำเป็นสำหรับไฟในการใช้พื้นที่ทั้งหมดอย่างสมบูรณ์
- ทุกเซลล์จะมีเวลาการเผาไหม้เป็นบวก (ไม่เป็นศูนย์) คุณไม่สามารถถือว่าค่าสูงสุดสำหรับเซลล์
- เมทริกซ์ไม่จำเป็นต้องเป็นสี่เหลี่ยมจัตุรัสหรือสมมาตร
- เมทริกซ์สามารถเป็นดัชนี 0 หรือ 1 ดัชนีตามที่คุณต้องการ
- สามารถกำหนดตำแหน่งเป็นพารามิเตอร์เดียวโดยมี tuple ของจำนวนเต็มสองพารามิเตอร์แยกกันของรูปแบบที่เหมาะสมอื่น ๆ
- ไม่สามารถระบุขนาดของเมทริกซ์เป็นพารามิเตอร์อินพุต
- คุณไม่จำเป็นต้องส่งออกทุกขั้นตอนขั้นกลางเพียงแค่จำนวนเวลาที่ถาม แต่ฉันจะไม่บ่นว่าขั้นตอนนั้นเป็นภาพใด ๆ
ตัวอย่างอื่น:
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
นี่คือรหัสกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุดสำหรับแต่ละภาษาจะชนะ!
1ถึงM*N
                