תכנית 2#: תת מערך מרבי שערכיו מונוטוניים עולים
כתבו תכנית המגדירה:
const unsigned int MAX_ROWS = 10,
MAX_COLS = 20 ;
וכן:
int matrix;
התכנית תקרא מהמשתמש זוג מספרים טבעיים באמצעותם יזין לה המשתמש בכמה שורות וכמה עמודות מתוך המערך הנ"ל ברצונו לעשות שימוש (לדוגמה אם הקלט הינו: 7 17 אזי המשתמש מעוניין להשתמש בשבע שורות ו- 17 עמודות; מספר השורה מוזן ראשון ומספר העמוד שני). אחר יזין המשתמש נתונים לתאי המערך. הנתונים יוזנו שורה אחר שורה (כלומר ראשית לתוך השורה 0# , אחר לשורה 1#, כן הלאה. בדוגמה שלנו יוזנו 119 נתונים). ניתן להניח כי הקלט תקין (כלומר אין צורך לבדקו).על התכנית לאתר תת-מערך מלבני רציף גדול ביותר המצוי ב- matrix ומקיים שאברי תת-המערך הינם בסדר עולה; כלומר, אם הפינה השמאלית העליונה של תת-המערך מצויה בתא במערך matrix, ואם גודלו של תת-המערך הוא m x n , אזי לכל תא שאינו אחרון בשורה בתת-המערך מתקיים a<a ולתא האחרון בכל שורה מתקיים שהוא קטן מהתא הראשון בשורה שאחריו בתת-המערך, כלומר: a<a). יש להציג את הפינה השמאלית העליונה של תת-המערך, ואת מספר השורות ומספר העמודות שהוא כולל. במידה וקיימים כמה תת-מערכים מקסימליים בגודלם יש להציג את הראשון ביניהם (כאשר אנו אומרים ראשון כוונתנו לזה שמספר השורה בה שוכנת פינתו השמאלית העליונה מינימלית, ובמידה וקיימים כמה תת-מערכים השוכנים באותה שורה יוצג זה שמספר העמודה בה הוא שוכן מינימלי).
לדוגמה עבור המערך:
4# 3# 2# 1# 0#
1 0 2 4 7 0#
5 3 2 1 8 1#
13 11 9 7 2 2#
30 28 14 12 1 3#
יוצג כי התא מהווה פינה שמאלית עליונה של תת-מערך מבוקש בגודל 3x3. פלט התכנית יכלול את מספר השורה, מספר העמודה, מספר השורות הנכללות בקטע המערך ומספר עמודות הנכללות בו (בסדר זה, עם רווח בין נתון לנתון).
רמז: סרקו את המערך תא אחר תא (באמצעות זוג לולאות), עבור כל תא בדקו את כל תת-המערכים שהתא עליו אתם ניצבים מהווה את פינתם השמאלית העליונה (כלומר תת-מערכים בגדלים: 1X1, 1X2, 1X3,…, 2X1, 2X2, 2X3, … . עשו זאת באמצעות זוג לולאות נוספות). הבדיקה (תריץ זוג לולאות נוספות) תבדוק האם תת-המערך עונה על הדרישות (הוא 'מונוטוני עולה') אם כן אזי אם תת-המערך גדול מכל תת-מערך שאיתרתם בעבר אזי שמרו את פרטי תת-המערך הנוכחי.
הערות:
א. תמיד ימצא לפחות תת-מערך יחיד מבוקש שכן תת-מערך בן תא יחיד עונה על הדרישות.
ב. הסבירו מהו זמן הריצה של התכנית שכתבתם. ענו על שאלה זאת בקובץ ה- README לצד תיאור התכנית.
אני עובד עליה כמה ימים ואני לא יודע איך לעשות את זה
יש לי כיוון אבל לא מצליח לי!