ฉันมีบอร์ดมากมายที่ฉันต้องการเพื่อให้มีพื้นที่น้อยที่สุดเท่าที่จะทำได้ น่าเสียดายที่กระดานล้มถ้าฉันสแต็คพวกเขามากกว่า 10 สูง ฉันต้องการโปรแกรมที่จะบอกวิธีกองซ้อนบอร์ดให้ใช้พื้นที่แนวนอนให้น้อยที่สุดเท่าที่จะทำได้โดยไม่ต้องวางบอร์ดซ้อนกันสูงกว่าสิบหรือมีกระดานแขวนอยู่เหนือพื้นที่ว่าง
งานของคุณ:
เขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อกำหนดอาร์เรย์ที่มีความยาวของบอร์ดเอาต์พุตในรูปแบบ ASCII จะสามารถจัดวางบอร์ดเพื่อประหยัดพื้นที่แนวนอนได้มากที่สุดโดยไม่ต้องซ้อนบอร์ดสูงกว่า 10 หรือมีส่วนใด ๆ คณะแขวนอยู่เหนือพื้นที่ว่างเปล่า ASCII art ของคุณควรแสดงการกำหนดค่าของบอร์ดโดยแต่ละอันจะแสดงโดยใช้อักขระที่แตกต่างกัน จะมีบอร์ดได้สูงสุด 20 บอร์ด ตัวอย่างเช่นหากอินพุตเป็น [2,2,4,2,2,2,4,4,4] เอาต์พุตที่เป็นไปได้คือ:
dhh
dgg
dff
dee
abc
abc
abc
abc
ซึ่งเป็นการกำหนดค่าที่มั่นคง (แม้ว่าจะล้มลงใน ~ 0.1 วินาทีในชีวิตจริง)
การป้อนข้อมูล:
อาร์เรย์ที่มีจำนวนเต็มสูงสุด 20 รายการแสดงความยาวของกระดาน
เอาท์พุท:
ศิลปะ ASCII แสดงการกำหนดค่าของบอร์ดตามที่อธิบายไว้ข้างต้น
กรณีทดสอบ:
โปรดทราบว่าอาจมีวิธีแก้ไขปัญหาอื่น ๆ สำหรับกรณีทดสอบและอักขระที่แสดงสำหรับแต่ละบอร์ดอาจแตกต่างกัน
[12,2,2,2,3,4,4,8,8] -> ffgghhiii
ddddeeeeeeee
bbbbbbbbcccc
aaaaaaaaaaaa
[4,4,4,4,4,4,4,4,4,4,4,4] -> llll
aaaa
cfghk
cfghk
cfghk
cfghk
debij
debij
debij
debij
[4,4,4,4,4,4,3,3,3,2,2,2,1] -> jjml
iiil
hhhk
gggk
ffff
eeee
dddd
cccc
bbbb
aaaa
เกณฑ์การให้คะแนน:
นี่คือโค้ดกอล์ฟคะแนนต่ำสุดเป็นไบต์ชนะ