מאי.07

למצוא כל הפֶּרְמוּטַצְיות של מחרוזת

למצוא כל הפֶּרְמוּטַצְיות של מחרוזת

יש למצוא את כל הפרמוטציות (חילוף) של מחרוזת נתונה.

  1. public void permutation(string str, string prefix)
  2. {
  3. if(str.Length==0) {
  4. Console.WriteLine(prefix);
  5. }
  6. else {
  7. for (int i = 0; i< str.Length; i++) {
  8. string rem = str.Substring(0, i) + str.Substring(i + 1);
  9. permutation(rem, prefix + str[i]);
  10. }
  11. }
  12. }


הסבר:

זמן ריצה:
O(n!)

אלגוריטם לא עושה דבר מלבד להחזיק תו אחד קבוע ואז לחשב את הפרמוטציות של האחרים.


  1. +---+
  2. +----------------------+GOD+--------------------+
  3. | +---+ |
  4. |Swap G with G |Swap G with O | Swap G with D
  5. | | |
  6. | | |
  7. +-v-+ +-v-+ +-v-+
  8. |GOD| |OGD| |DOG|
  9. +---+G is fixed +---+O is fixed +---+D is fixed
  10. | | |
  11. |Swap O with D |Swap G with D |Swap O with G
  12. | | |
  13. +-v-+ +-v-+ +-v-+
  14. |GDO| |ODG| |DGO|
  15. +---+G and D is fixed +---+O and D is fixed +---+D and G is fixed



שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה