Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. using System;
  2.  
  3.  
  4. namespace Lab1_wariacje_bez_powtorzen
  5. {
  6. class per_z_powt
  7. {
  8. private static int numberOfCombos;
  9.  
  10. public static void Main()
  11. {
  12. var collection = new[] { 6, 1, 3, 1, 2 };
  13. PermuteRep(collection);
  14. Console.ReadKey();
  15. }
  16.  
  17. private static void PermuteRep<T>(T[] workArray, int? end = null, int start = 0)
  18. where T : IComparable<T>
  19. {
  20. if (end == null)
  21. {
  22. end = workArray.Length - 1;
  23. }
  24.  
  25. PrintPerm(workArray);
  26.  
  27. for (int left = end.Value - 1; left >= start; left--)
  28. {
  29. for (int right = left + 1; right <= end; right++)
  30. if (workArray[left].CompareTo(workArray[right]) != 0)
  31. {
  32. Swap(ref workArray[left], ref workArray[right]);
  33. PermuteRep(workArray, end, left + 1);
  34. }
  35.  
  36. var firstElement = workArray[left];
  37.  
  38. for (int i = left; i <= end.Value - 1; i++)
  39. {
  40. workArray[i] = workArray[i + 1];
  41. }
  42.  
  43. workArray[end.Value] = firstElement;
  44. }
  45. }
  46.  
  47. private static void Swap<T>(ref T a, ref T b)
  48. {
  49. var temp = a;
  50. a = b;
  51. b = temp;
  52. }
  53.  
  54. private static void PrintPerm<T>(T[] arr)
  55. {
  56. Console.WriteLine($"{++numberOfCombos}: [{string.Join(", ", arr)}]");
  57. }
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement