יול.05

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

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

נותנים מערך של מספרים, יש למצוא את כל הפרמוטציות שלו.

  1. //N*N! Time
  2. //N*N! Space
  3. public static List<List<int>> GetALLPermutations(List<int> array) {
  4. List<List<int>> result = new List<List<int>>();
  5. BuildPermutations(0, array, result);
  6. return result;
  7. }
  8. private static void BuildPermutations(int i, List<int> array, List<List<int>> permutations) {
  9. if (i == array.Count - 1)
  10. permutations.Add(new List<int>(array)); //N
  11. else {
  12. for (int j = i; j < array.Count;j++) {
  13. swap(array, i, j);
  14. BuildPermutations(i+1, array, permutations); //N!
  15. swap(array, i, j);
  16. }
  17. }
  18. }
  19. public static void swap(List<int> array, int i, int j) {
  20. int tmp = array[i];
  21. array[i] = array[j];
  22. array[j] = tmp;
  23. }


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

תגובות(0)

השאירו תגובה

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

תגובה