מבני נתונים ואלגוריתמים - מחברת קורס/אלגוריתמים/תכנון דינאמי/תרגילים/הדפסה יפה/שאלה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

ברצוננו להדפיס פסקת טקסט בצורה יפה.

נתונות לנו מילים, Word[1], Word[2], ..., Word[n]. עלינו להחליט היכן לסיים כל שורה בפסקה, לפי הכללים הבאים:

  1. בכל שורת טקסט יש מקום ל תווים (אין מילה בעלת יותר מ תווים).
  2. יש להדפיס רווח יחיד בין כל שתי מילים באותה שורה.



דוגמה:

נניח ש, והמילים הן

If they have no rice, let them eat ladoo.

נוכל לבנות פסקה כך:

If they have no

rice, let them

eat ladoo.

אך לא כך:

If they have no rice, let them eat

ladoo.

(בדוגמה השניה יש יותר מ20 תווים בשורה הראשונה).


אם בשורה יש תווים (כולל הרווחים בין המילים), אז יופי השורה הוא . יופי הפסקה מוגדר כסכום היופי של השורות שלו, למעט השורה האחרונה.



דוגמה:

בפסקה

If they have no

rice, let them

eat ladoo.

יש 15 תווים בשורה הראשונה, ו14 תווים בשורה השניה. יופי הפסקה, לכן הוא .


אנא מצא אלגוריתם יעיל למציאת הפסקה היפה ביותר. הנח ש הוא משתנה גלובלי נתון, ושקיימת פונקציה Length המקבלת מספר ומחזירה את מספר התווים במילה ה.