נשלח בתאריך: 09 May 2008 בשעה 16:42 | | IP רשוּם
|
|
|
|
נתונים 2 מערכים וצריך לבדוק שהם מהווים תמורה(פרמוטציה)האחד של השני.
יש לממש את הפתרון בעזרת רקורסיה בלבד ללא לולאות.
אין למיין אמנם ניתן לשנות סדרם של איברים.
סיבוכיות ריצה\מקום לא רלוונטים.
מה שאני מבקש יהיה קצת מוזר, ויופנה למומחי הפורום:
בהינתן הפתרון המוצע שלי אבקש שתדרגו אותו עם ציון מ1-100:
קוד:
public static boolean isExist(int[] a, int val, int i, int place) { if(i==a.length) return false; if(val==a) { int tmp=a; a=a[place]; a[place]=tmp; return true; } else return isExist(a, val, i+1, place); } public static boolean isM(int[] a, int[] b, int i) { if(i==b.length) return true; if(!isExist(a, b, i, i)) return false; return isM(a, b, i+1); } |
|
|
מה שבעצם ראיתם עכשיו זה הפתרון שלי לתרגיל- פשוט-
שיטה אחת מקבלת ערך ומערך, ובמידה ונמצא הערך במערך אז יוחלף הערך באינדקס נתון(שבשיטה השניה רץ מתחילת המערך השני), כך שנוצרת בעקביות הפרדה בין ערכים שכבר נבדקו ובין אלו שעוד לא.
שימו לב שסיבוכיות לא חשובה כאן.
|