נשלח בתאריך: 04 February 2009 בשעה 21:48 | | IP רשוּם
|
|
|
|
נתונה מטריצה שמימדיה NXM (N>3, M>3) אשר כל תא בה מכיל 0 או 1.
יש לבדוק האם קיים מסלול רציף של 1-ים המתחיל בשורה העליונה ומסתיים בשורה התחתונה, כאשר מעבר בין 1 אחד ברצף למשנהו מתבצע (רק) על-ידי: תנועה כלפי מטה (באותה עמודה), תנועה באלכסון שמאלה או תנועה באלכסון ימינה. (כלומר, תנועות הצידה, ימינה או שמאלה אינן אפשריות).
לדוגמה במטריצה:
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
המסלול המסומן עונה על הדרישות (וזהו המסלול היחיד).
א. כתבו פונקציה בוליאנית רקורסיבית המקבלת מטריצה ואת מימדיה, ובודקת האם קיים בה מסלול העונה על הדרישות. (ניתן לפרק את המשימה ולבנות פונקצית עזר, גם היא רקורסיבית).
ב. כתבו תוכנית לבדיקת הפונקציה שכתבתם. התוכנית תכלול פונקציה אשר תבנה מטריצה כנ"ל, וערכיה ייקבעו בצורה רנדומאלית. מימדי המטריצה יוכנסו על-ידי המשתמש. התוכנית תכלול גם פונקציה להדפסת המטריצה.
__________________ eyal
|