Tôi có một loạt các bảng tôi cần phải xếp trong một không gian nhỏ nhất có thể. Thật không may, các bảng rơi xuống nếu tôi xếp chúng cao hơn 10. Tôi cần một chương trình để cho tôi biết làm thế nào để xếp các tấm ván để có ít không gian ngang nhất có thể, mà không cần xếp chồng các tấm gỗ cao hơn mười, hoặc có các tấm ván treo trên không gian trống.
Nhiệm vụ của bạn:
Viết chương trình hoặc hàm, khi được cung cấp một mảng chứa độ dài của các bảng, xuất ra dưới dạng nghệ thuật ASCII, cách xếp chồng các bảng để bảo tồn càng nhiều không gian ngang càng tốt, mà không xếp chồng các bảng cao hơn 10 hoặc có bất kỳ phần nào của bất kỳ bảng treo trên không gian trống. Nghệ thuật ASCII của bạn sẽ hiển thị cấu hình của các bảng, với mỗi bảng được hiển thị bằng một ký tự khác nhau. Sẽ có tối đa 20 bảng. Ví dụ: nếu đầu vào là [2,2,4,2,2,4,4], thì đầu ra có thể là:
dhh
dgg
dff
dee
abc
abc
abc
abc
đó là một cấu hình ổn định (mặc dù điều này sẽ giảm trong ~ 0,1 giây trong cuộc sống thực).
Đầu vào:
Một mảng chứa tối đa 20 số nguyên, hiển thị độ dài của bảng.
Đầu ra:
Nghệ thuật ASCII hiển thị các cấu hình của bảng, như đã nêu ở trên.
Các trường hợp thử nghiệm:
Lưu ý rằng có thể có các giải pháp khác cho các trường hợp thử nghiệm và các ký tự hiển thị cho mỗi bảng có thể khác nhau.
[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
Ghi điểm:
Đây là môn đánh gôn , điểm số thấp nhất tính theo byte