ความท้าทายได้รับอนุญาตจากการประกวดรหัสมหาวิทยาลัยของฉัน
การพึ่งพาเราบนโทรศัพท์มือถือทำให้เราชาร์จแบตเตอรี่ทุกคืนจนถึงระดับสูงสุดของแบตเตอรี่ดังนั้นเราจึงไม่เสี่ยงต่อการเกิดไฟฟ้าดับในช่วงกลางของวันถัดไป มีแม้กระทั่งคนที่เมื่อพวกเขาเห็นร้านขายของฟรีในระหว่างวันให้นำไปเก็บค่าใช้จ่ายสำหรับสิ่งที่อาจเกิดขึ้น
ฉันเป็นหนึ่งในพวกเขา
หลายปีที่ผ่านมาฉันได้ปรับปรุงเทคนิคของฉันเพื่อไม่ให้ชาร์จแบตเตอรี่ให้สูงสุดทุกคืน ด้วยกิจวัตรซ้ำ ๆ ที่รู้จักกันอย่างสมบูรณ์แบบของฉันฉันชัดเจนในเวลาของวันที่ฉันจะสามารถทำการชาร์จบางส่วนเหล่านั้น (และจำนวนหน่วยที่จะเพิ่มระดับ) และสิ่งที่ลดระดับแบตเตอรี่ระหว่างการชาร์จแต่ละครั้ง ด้วยข้อมูลเหล่านี้ทุกคืนฉันคำนวณระดับแบตเตอรี่ขั้นต่ำที่ฉันต้องออกจากบ้านในวันถัดไปด้วยเพื่อที่ว่ามันจะไม่ต่ำกว่าเกณฑ์ที่กำหนดด้วยตนเองของฉันสองหน่วย
สิ่งที่ฉันยังไม่ได้จัดการเพื่อหลักคือการคำนวณเดียวกันเมื่อฉันออกจากรูทีนที่กำหนดและฉันมีทางเลือกมากมายที่จะทำ ตัวอย่างเช่นมันเกิดขึ้นในวันที่ฉันกำลังเดินทางไปยังเมืองอื่นที่ฉันสามารถไปถึงได้ในหลาย ๆ ทาง
ในแนวทางแรกของปัญหาฉันคาดว่าฉันต้องการย้าย "กระดานหมากรุก" จากมุมบนซ้ายไปยังมุมขวาล่าง ใน "เซลล์" แต่ละรายการฉันสามารถเรียกเก็บเงินตามจำนวนที่ระบุได้หรือไม่สามารถทำได้และระดับการโหลดลดลง
ท้าทาย
รับเมทริกซ์ FxC ของจำนวนเต็มเอาท์พุทจำนวนแบตเตอรี่ระดับต่ำสุดที่ฉันต้องไปจากมุมบนซ้ายไปที่มุมล่างขวาโดยไม่ต้องระดับโหลดเคยต่ำกว่า 2 หน่วย
ในเมทริกซ์จำนวนบวกแสดงว่าฉันสามารถชาร์จโทรศัพท์มือถือได้มากน้อยเพียงใดก่อนที่ฉันจะกลับมาทำงานต่อในเส้นทางของฉันในขณะที่ตัวเลขติดลบระบุว่าไม่มีช่องเสียบและแบตเตอรี่ของโทรศัพท์มือถือจะลดลงตามระดับนั้น มีการรับประกันว่าปริมาณในเซลล์ต้นทางและปลายทาง (มุมบนซ้ายและมุมขวาล่าง) เป็น 0 เสมอและค่าที่เหลือ (ค่าสัมบูรณ์) ไม่เกิน 100
ตัวอย่างที่
ให้ไว้:
เส้นทางที่ฉันต้องการแบตเตอรี่น้อยกว่าคือ:
และระดับแบตเตอรี่ขั้นต่ำที่ฉันต้องการคือ 4
หมายเหตุ
- จุดเริ่มต้นจะเป็นมุมบนซ้ายเสมอ
- จุดจบจะเป็นมุมล่างขวาเสมอ
- คุณไม่สามารถไปที่เซลล์ที่คุณผ่านไปแล้ว ตัวอย่าง: เมื่ออยู่ในตำแหน่ง (0,1) คุณไม่สามารถไปที่จุดเริ่มต้น (0,0)
- ระดับแบตเตอรี่ของคุณไม่สามารถ (ต่ำกว่า 2) ไม่ว่าจะด้วยเหตุผลใดก็ตาม
- คุณสามารถสมมติได้ว่าจะมีจุดเริ่มต้นและจุดสิ้นสุดเสมอ
- คุณสามารถใช้อาร์เรย์ 1 มิติเป็นหลายมิติได้หากต้องการ
[1,2,3] == [[1,2,3]]
- อาจมีเส้นทางที่ถูกต้องหลายรายการ
- เป้าหมายของคุณคือส่งออกเฉพาะระดับแบตเตอรี่เริ่มต้นต่ำสุดที่ต้องการไม่ใช่เส้นทาง
- คุณสามารถไปได้ทั้งแนวตั้งและแนวนอน (ไม่ใช่แนวทแยงมุม)
กรณีทดสอบ
[0, 0] => 2
[0, 1, 0] => 2
[0, -1, 0] => 3
[0, 15, -20, 5, 0] => 7
[[0, -3],[-5, 0]] => 5
[[0, -5, -9, 5], [-3, 5, 2, -2], [2, -4, -4, 0]] => 5
[[0, -1, 1, -1], [-1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, 0]] => 4
[[0,1,-1],[-9,-9,1],[-9,1,-1],[-9,-1,-9],[-9,1,0]]
0s
ตำแหน่งที่มุมบนซ้ายและอีกหนึ่งที่ด้านล่างขวา