อัลกอริธึมการแกะสลักตะเข็บหรือรุ่นที่ซับซ้อนกว่านั้นใช้สำหรับการปรับขนาดภาพที่รับรู้เนื้อหาในโปรแกรมกราฟิกและไลบรารีต่างๆ มาเล่นกอล์ฟกันเถอะ!
ข้อมูลที่คุณป้อนจะเป็นจำนวนเต็มอาร์เรย์สองมิติ
เอาต์พุตของคุณจะเป็นอาร์เรย์เดียวกันซึ่งแคบลงหนึ่งคอลัมน์โดยที่หนึ่งรายการถูกลบออกจากแต่ละแถวรายการเหล่านั้นจะแทนพา ธ จากบนลงล่างโดยมีผลรวมต่ำสุดของพา ธ ดังกล่าวทั้งหมด
https://en.wikipedia.org/wiki/Seam_carving
ในภาพประกอบด้านบนค่าของแต่ละเซลล์จะแสดงเป็นสีแดง ตัวเลขสีดำคือผลรวมของค่าของเซลล์และหมายเลขสีดำที่ต่ำที่สุดในหนึ่งในสามของเซลล์ด้านบน (ชี้โดยลูกศรสีเขียว) เส้นทางที่ไฮไลต์สีขาวเป็นเส้นทางผลรวมต่ำสุดสองเส้นทางโดยมีผลรวมเป็น 5 (1 + 2 + 2 และ 2 + 2 + 1)
ในกรณีที่มีสองเส้นทางเชื่อมโยงกับผลรวมต่ำสุดไม่สำคัญว่าคุณจะลบออก
อินพุตควรถูกนำมาจาก stdin หรือเป็นพารามิเตอร์ฟังก์ชัน สามารถจัดรูปแบบในลักษณะที่สะดวกกับภาษาที่คุณเลือกรวมถึงเครื่องหมายวงเล็บและ / หรือตัวคั่น โปรดระบุคำตอบของคุณว่าจะให้นำเข้าข้อมูลอย่างไร
เอาต์พุตควรเป็น stdout ในรูปแบบที่มีการคั่นอย่างไม่น่าเชื่อหรือเป็นค่าส่งคืนฟังก์ชันในภาษาของคุณเทียบเท่ากับอาร์เรย์ 2d (ซึ่งอาจรวมถึงรายการที่ซ้อนกัน ฯลฯ )
ตัวอย่าง:
Input:
1 4 3 5 2
3 2 5 2 3
5 2 4 2 1
Output:
4 3 5 2 1 4 3 5
3 5 2 3 or 3 2 5 3
5 4 2 1 5 2 4 2
Input:
1 2 3 4 5
Output:
2 3 4 5
Input:
1
2
3
Output:
(empty, null, a sentinel non-array value, a 0x3 array, or similar)
แก้ไข: ตัวเลขทั้งหมดจะไม่เป็นลบและทุกตะเข็บที่เป็นไปได้จะมีผลรวมที่พอดีกับจำนวนเต็ม 32 บิตที่ลงนามแล้ว