Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Lab1_wariacje_bez_powtorzen
- {
- class per_z_powt
- {
- private static int numberOfCombos;
- public static void Main()
- {
- var collection = new[] { 6, 1, 3, 1, 2 };
- PermuteRep(collection);
- Console.ReadKey();
- }
- private static void PermuteRep<T>(T[] workArray, int? end = null, int start = 0)
- where T : IComparable<T>
- {
- if (end == null)
- {
- end = workArray.Length - 1;
- }
- PrintPerm(workArray);
- for (int left = end.Value - 1; left >= start; left--)
- {
- for (int right = left + 1; right <= end; right++)
- if (workArray[left].CompareTo(workArray[right]) != 0)
- {
- Swap(ref workArray[left], ref workArray[right]);
- PermuteRep(workArray, end, left + 1);
- }
- var firstElement = workArray[left];
- for (int i = left; i <= end.Value - 1; i++)
- {
- workArray[i] = workArray[i + 1];
- }
- workArray[end.Value] = firstElement;
- }
- }
- private static void Swap<T>(ref T a, ref T b)
- {
- var temp = a;
- a = b;
- b = temp;
- }
- private static void PrintPerm<T>(T[] arr)
- {
- Console.WriteLine($"{++numberOfCombos}: [{string.Join(", ", arr)}]");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement