במידה למישהו יש שאלה דחופה באחת מן השפות שציינתי למעלה, הוא יכול לשלוח לי הודעה פרטית עם השאלה, ואני אשתדל לעלות פתרון מלא לפורום.
בהצלחה.
במידה למישהו יש שאלה דחופה באחת מן השפות שציינתי למעלה, הוא יכול לשלוח לי הודעה פרטית עם השאלה, ואני אשתדל לעלות פתרון מלא לפורום.
בהצלחה.
אם עוד פעם אחת אתה תפרסם את האתר הזה בחתימה שלך, אתה תושעה לצמיתות.
|
|
איך מדפיסים את כל האפשרויות של מערך בעזרת רקורסיה עם C#? (תרגיל בספר שלי)
קוראים לזה נדמה לי "תמורה"
למשל מערך של 3,2,1
ידפיס
1,2,3
1,3,2
2,1,3
2,3,1
3,2,1
3,1,2
תודה מראש- זה לא לחוץ לי אז אני לא שולח פרטית
אני אשתדל לעלות פתרון היום.
אם עוד פעם אחת אתה תפרסם את האתר הזה בחתימה שלך, אתה תושעה לצמיתות.
קוראים לנושא הזה תמורה , permutation.
בעקרון יש N! קומבינציות במקום הראשון אתה בוחר מכל המספר N אפשרויות במקום השני כבר יש לך אפשרות אחת פחות אז N-1 אפשרויות עד המקום האחרון שזה 1 אפשרויות אתה מכפיל את כל הפעמים שבחרת יוצא לך N! ..
מויקיפדיה : תמורה (פרמוטציה) היא סידור מחדש של העצמים בקבוצה.
הורדה לPDF בנושא:
http://sites.google.com/site/ranlsit...edirects=0&d=1
פונקציה מהPDF לדוגמא:
static void exch(int i, int j)
{
int t = p[i]; p[i] = p[j]; p[j] = t;
}
static void generate(int N)
{
int c;
if (N == 0) { doit(); return; }
for (c = 0; c <= N; c++)
{
generate(N - 1);
exch(N % 2 == 0 ? 1 : c, N);
}
}
* יש ליצור מערך\רשימה בשם p מאותחל בערכים.
* מתודה doit מבצעת מה שאתה רוצה לעשות כל פעם שחוזרת תמורה.
* N מספר האיברים במערך/רשימה -
כל מה שנשאר לעשות זה לכתוב את הקוד של הפונקצייה doit שמדפיסה את המערך.קוד PHP:static void exch(int i, int j)
{
int t = p[i]; p[i] = p[j]; p[j] = t;
}
static void generate(int N)
{
int c;
if (N == 0) { doit(); return; }
for (c = 0; c <= N; c++)
{
generate(N - 1);
exch(N % 2 == 0 ? 1 : c, N);
}
}
נערך לאחרונה על ידי jhonlev; 24-02-2011 בשעה 21:54. סיבה: הוספה
אם עוד פעם אחת אתה תפרסם את האתר הזה בחתימה שלך, אתה תושעה לצמיתות.