Logo

רד-בורד: ארכיון

ראשי > תיכנות > שאלה

24/06/2007 02:54:24 T4uSBaZ
שפת C.

יש לי מערך עם N תווים בתוכו, ואני צריך לבצע בינהם את כל ההחלפות האפשריות. כיצד אני עושה את זה?
לדוגמא, לקלט 123
כל ההחלפות הם:
132
213
231
312
321

בדוגמא הזאת יש 3 תווים במערך. הבעיה שלי שבמערך יש N תווים ולפיכך אני לא יודע איך לעשות זאת.[ההודעה נערכה על-ידי T4uSBaZ ב-24/06/2007 02:54:40]
24/06/2007 08:17:22 Debug
אפשר לקחת את התו האחרון במערך ולהחליף אותו בזה שנמצא אחריו
עד שהוא מגיע לתא הראשון. כאשר הוא מגיע לתא הראשון לוקחים שוב פעם את התו שנמצא בתא האחרון ושוב מחליפים אותו בתא שנמצא אחריו עד שהוא מגיע לתא הראשון. חוזרים על אותה פעולה עד שהמחרזות שנמצאת במערך היא אותה המחרוזת כמו בקלט
לדוגמא:
12e3->התחלה (קלט)
123e
132e
312e
31e2
3e12
e312
e321
e231
2e31
2e13
21e3
12e3-> הגענו להתחלה[ההודעה נערכה על-ידי Debug ב-24/06/2007 08:18:54]
24/06/2007 11:47:59 T4uSBaZ
חשבתי על זה. שים לב, שלא עשית את כל הקומבינציות האפשריות.!

במקרה של ארבע תווים, יש 24 קומבינציות שונות. (מספר האפשרויות שווה למספר העצרת ( 1*2*3..*n).
24/06/2007 13:13:50 Debug
צודק ב100%.
אפשר לתקן את זה אם נעשה את אותה הפעולה על המספר האחרון בסדרה
(סדרה "1",סדרה "e" וכו’)
לדוגמא:
סדרה "1":
1e23
12e3
- 1e23 המחרוזת האחרונה בסדרה
-> נבצע את אותה הפעולה על מחרוזת האחרונה בסדרה ונקבל את הקומבינציות החסרות:
1e32
13e2
31e2

סדרה e
e123
...
נקבל עוד שתי קומבינציות מאותה "סדרה" + קומבינציה מ"סדרה" אחרת
לבסוף נקבל 6 קומבינציות מכל "סדרה" מה שיוצא 24 קומבינציות
לא בדקתי איך זה יוצא ב5 תווים ואני מניח שצריך קצת לשחק עם זה
נ.ב
אני מקווה שאני מובן =)

[ההודעה נערכה על-ידי Debug ב-24/06/2007 13:49:59]
24/06/2007 13:49:11 T4uSBaZ
לא מצליח לי ממש, מצטער =\
26/06/2007 11:34:39 xtr
קודם כל אתה צריך למצוא את כל הספרות אני הייתי מגידר מערך
עקרונית גודלו צריך להיות בסגנון ה 36000 לכן אם אתה רוצה שיכניסו כל מספר אפשרי בתכום האינט מערך זלא יהיה מערך זה יהיה רשימה או משהוכדי לפרק לספרות אתה עושה לולאת וואיל
num%10!=0
array[i++]=num%10
num=num%10
עכשיו שיש לך את כל המספרים במערך אמור להיות לך יותר קל
חשבתי על פיתרו ולדעתי ריקוקסיה תיהיה הפתרון9

תסתכל על זה
if num1 = (int)string1
break;
else
12
if (i=0)
i=len(string)
string(i-1)=temp
string(i-1)=string i
i=temp
print(string)
return f(....)


זה כזה חפני כזה אין הגדרה לפונ’ציה כי אני פשוט חושב שיהייה לך קל לעשות בכל גלובאלי
27/06/2007 18:45:49 T4uSBaZ
xtr, הדוגמא הייתה ספרות. זה לא ספרות , זה תווים. זה יכול להיות כל תו שיכול להיות מוקלד :)
27/06/2007 23:06:25 xtr
נו ו ??

זה לא כל כך הרבה לשנות אתה יודע ...
עמודים: 1