→ חזרה לעמוד הקודם
// תרגול

תרגול מערכים דו מימדיים

יסודות · 899371מערכים דו מימדיים

תרגול מטריצות מתקדם

1. א. כתבי פעולה בשם IsMagicSquare המקבלת מטריצה ריבועית (int[,] matrix) ותחזיר האם היא ריבוע קסם.

ריבוע קסם הוא מטריצה ריבועית שמקיימת את התנאים הבאים:

● סכום כל שורה שווה.

● סכום כל עמודה שווה.

● סכום האלכסון הראשי שווה.

● סכום האלכסון המשני שווה.

וכל הסכומים הללו שווים זה לזה.

ב. מהי סיבוכיות הפעולה שכתבת בסעיף א'?

2. א. כתבי פעולה בשם IsSymmetricMatrix שמקבלת מטריצה ריבועית של תווים (char[,] matrix), ובודקת ומחזירה האם המטריצה נראית זהה מכל כיוון – לדו':

מטריצה סימטרית: (הפעולה תחזיר true)

A B A
B C B
A B A

מטריצה לא סימטרית: (הפעולה תחזיר false)

A B C
B C B
C B A

ב. מה סיבוכיות הפעולה שכתבת בסעיף א'?

3. א. כתבי פעולה בשם IsWordInPuzzle המקבלת מטריצה של תווים (char[,] puzzle) ומילה (string word), ובודקת האם המילה מופיעה בתפזורת. הפעולה תחזיר true אם המילה מופיעה במטריצה במאונך, במאוזן, ישר או הפוך.

הגדרה: המילה יכולה להופיע גם מהכיוון הרגיל וגם בכיוון ההפוך

ב. כתבי פעולה בשם AreAllWordsInPuzzle שמקבלת מטריצה של תווים (char[,] puzzle) ומערך מילים (string[] words), ומחזירה true אם כל המילים במערך מופיעות בתפזורת.

הפעולה תשתמש בפעולה שכתבת בסעיף א כדי לבדוק כל מילה במערך.

ג. נתחי את סיבוכיות הזמן של הפעולה AreAllWordsInPuzzle

הורדת הקובץ המקוריPDF · תרגול מערכים דו מימדיים