4
แยกตารางออกเป็นกริด
บทนำ มีหมู่บ้านเล็ก ๆ ที่ไม่มีอะไรนอกจากบ้านสองสามหลังและทุ่งโล่ง ๆ ข้าราชการในท้องถิ่นต้องการแบ่งหมู่บ้านออกเป็นล็อตเพื่อให้แต่ละล็อตมีบ้านหนึ่งหลังแน่นอนและเส้นขอบของล็อตนั้นเป็นตารางเส้นตรงที่สวยงาม งานของคุณคือการตรวจสอบว่าเป็นไปได้ งาน การป้อนข้อมูลของคุณคืออาร์เรย์ 2D บิตของบิต 1 หมายถึงบ้านและ 0 ช่องว่าง ขนาดจะมีอย่างน้อย1 × 1และจะมีอย่างน้อยหนึ่ง 1 คุณสามารถใช้อินพุตในรูปแบบที่เหมาะสม (รายการซ้อนจำนวนเต็มรายการของสตริงสตริงหลายบรรทัด ฯลฯ ) โปรแกรมของคุณจะต้องพิจารณาว่าอาเรย์สามารถแบ่งออกเป็นเซลล์กริดโดยใช้เส้นตรงแนวนอนและแนวดิ่งเพื่อให้แต่ละเซลล์กริดมีหนึ่งเดียว 1 เซลล์กริดอาจมีขนาดและรูปร่างที่แตกต่างกันแม้ว่าพวกเขาจะเป็นรูปสี่เหลี่ยมเสมอ เส้นต้องวิ่งจากขอบหนึ่งของอาร์เรย์ไปยังขอบตรงข้าม ตัวอย่างเช่นต่อไปนี้เป็นส่วนที่ถูกต้องของอาร์เรย์: 00|0010|01|1 01|0000|00|0 --+----+--+- 00|0000|00|1 01|0010|01|0 --+----+--+- 01|1000|10|1 ในขณะที่การแบ่งต่อไปนี้ไม่ถูกต้องเนื่องจากมีกริดเซลล์ที่ไม่มี 1s หรือมากกว่าหนึ่ง 1: 00|0010|01|1 --+----+--+- 01|0000|00|0 00|0000|00|1 01|0010|01|0 --+----+--+- 00|1000|10|1 หากมีการแบ่งที่ถูกต้องคุณจะต้องส่งออกค่าความจริงและมิฉะนั้นเป็นค่าเท็จ กฎและการให้คะแนน คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดชนะ …