יישום אלגוריתמים למערכים דו-ממדיים 2D
הוצג| English | משמעות |
|---|---|
| nested-loop/ˈnestɪd luːp/ | לולאות מקושרות |
| main diagonal/meɪn daɪˈæɡənl/ | אלכסון ראשי |
| indexed/ˈɪndekst/ | מודדק |
אלגוריתמי רשת
- אלגוריתמים 2-D משלבים דפוסי מערך עם עבודה על לולאות מקוננות.
- סיכום / ספירה / מקסימום כלל הרשת: הצטברו בתוך הלולאה הפנימית.
- חיפוש ברשת: החזירו את ה
[row][col]שנמצא (או אות "לא נמצא"). - אותה לוגיקה של הצטברות/מקסימום, עכשיו על
rows × columnsתאים.
סיכומי שורה ועמודה
- שורה אחת: קבעו
r, לולאהcעל העמודות, סיכוםg[r][c]. - עמודה אחת: קבעו
c, לולאהrעל השורות, סיכוםg[r][c]. - בחירת אינדקס לקבע ואחר ללולאה היא ההחלטה המרכזית.
- סכום שורה עובר אופקית; סכום עמודה עובר אנכי.
האלכסון
- האלכסון הראשי של רשת מרובעת הוא תאים שבהם שורה == עמודה.
- לולאה עם אינדקס אחד:
for (int i = 0; i < g.length; i++) { ... g[i][i] ... } g[0][0], g[1][1], g[2][2], …— לולאה אחת, שני האינדקסים שווים זה לזה.- שימושי לרשתות מרובעות (בדיקות זיהוי, אלכסוני לוח).
שינוי תאים
- כדי לשנות תא, השתמש בלולאות מקוננות עם אינדקס והעלה ערך ל
g[r][c] = .... - הגרסה for-each לא יכולה לכתוב חזרה לרשת.
- שמור על שתי הגבולות — אורך שגוי יגרום לקריאה או כתיבה בתא שגוי.
- מעקב אחר
[r][c]בקפדנות, במיוחד כאשר מספר השורות ועמודות שונה.
חליט איזה אינדקס לקבע ואיזה לעבור עליו בלולאה — זה ההבדל בין סכום שורה לסכום עמודה. סכום שורה קובע r ועובר על c (g[r][c] אופקית); סכום עמודה קובע c ועובר על r (g[r][c] אנכית). שינוי תאים דורש לולאות מקוננות עם אינדקס (g[r][c] = …); גרסת for-each רק יכולה לקרוא.
סיכום העמודה ה-0 של רשת:
int sum = 0;for (int r = 0; r < g.length; r++) { sum += g[r][0]; }- מקבע את העמודה
0, עובר אנכית בשורות — סכום עמודה.
אלגוריתמים 2-D מיישמים דפוסי מערך על לולאות מקוננות: סיכום/ספירה/מקסימום/חיפוש של הרשת כולה, סיכום של שורה (קבע r, עבור c), סיכום של עמודה (קבע c, עבור r), או ה-אלכסון (g[i][i]). שינוי תאים דורש לולאות מדדיות (g[r][c] = …); שימו לב לשני הגבולות (g.length שורות, g[0].length עמודות).
סיכום עמודה 0
g[0][0]=1, g[1][0]=4, g[2][0]=7: סיכום רץ 1, 5, 12.
כדי לסכם שורה אחת r, עליך...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סיכום שורה מקבע את השורה ומעביר על העמודות.
כדי לסכם עמודה אחת c, עליך...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סיכום עמודה מקבע את העמודה ומעביר על השורות.
האלכסון הראשי של רשת מרובעת הוא תאים שבהם...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
g[0][0], g[1][1], g[2][2] — אינדקס אחד, שניהם שווים.
צורת for-each יכולה לשנות (לכתוב) תאים ברשתה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
for-each הוא לקריאה בלבד; השתמשו בלולאות עם אינדקסים (g[r][c] = ...) לכתיבה.
עמודה 0 של {{1,2},{4,5},{7,8}} היא 1, 4, 7. מה הסכום שלה?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
1 + 4 + 7 = 12.
סדרו את השלבים לסכום העמודה c.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
אפסו, סרו את השורות, צברו, חזרו.