Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace PermRepRecursive
- {
- class Program
- {
- private static List<string> elements;
- static void Main()
- {
- elements = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
- elements.Sort();
- PermuteRep(elements, 0, elements.Count - 1);
- }
- private static void PermuteRep(List<string> elements, int start, int end)
- {
- Console.WriteLine(string.Join(" ", elements));
- for (int left = end - 1; left >= start; left--)
- {
- for (int right = left + 1; right <= end; right++)
- {
- if (elements[left] != elements[right])
- {
- Swap(elements, left, right);
- PermuteRep(elements, left + 1, end);
- }
- }
- var firstElement = elements[left];
- for (int i = left; i <= end - 1; i++)
- {
- elements[i] = elements[i + 1];
- elements[end] = firstElement;
- }
- }
- }
- private static void Swap(List<string> elements, int left, int right)
- {
- var temp = elements[left];
- elements[left] = elements[right];
- elements[right] = temp;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement