Trước khi bạn cho rằng nó trùng lặp (có nhiều câu hỏi hỏi cách chia chuỗi dài mà không vi phạm từ) hãy nhớ rằng vấn đề của tôi hơi khác một chút: thứ tự không quan trọng và tôi đã phù hợp với các từ để sử dụng mọi dòng càng nhiều càng tốt.Tách chuỗi dài mà không vi phạm các dòng đầy đủ
Hi,
Tôi đã một tập có thứ tự các từ và tôi muốn kết hợp chúng mà không cần sử dụng nhiều hơn 253 ký tự.
def compose(words):
result = " ".join(words)
if len(result) > 253:
pass # this should not happen!
return result
Vấn đề của tôi là tôi muốn cố gắng điền vào dòng càng nhiều càng tốt. Ví dụ:
words = "a bc def ghil mno pq r st uv"
limit = 5 # max 5 characters
# This is good because it's the shortest possible list,
# but I don't know how could I get it
# Note: order is not important
good = ["a def", "bc pq", "ghil", "mno r", "st uv"]
# This is bad because len(bad) > len(good)
# even if the limit of 5 characters is respected
# This is equivalent to:
# bad = ["a bc", "def", "ghil", "mno", "pq r", "st uv"]
import textwrap
bad = textwrap.wrap(words, limit)
Tôi làm cách nào?
Đây là vấn đề về lập trình động; tấn công nó giống như cách bạn tấn công [vấn đề thay đổi tiền xu] (http://www.geeksforgeeks.org/dynamic-programming-set-7-coin-change/). –