Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class Words
- {
- private static int count;
- static void Main()
- {
- var arr = Console.ReadLine().ToCharArray();
- Array.Sort(arr);
- PermuteRep(arr, 0, arr.Length - 1);
- Console.WriteLine(count);
- }
- private static bool HasConsecutiveLetter(char[] word)
- {
- for (int i = 0; i < word.Length - 1; i++)
- {
- if (word[i].Equals(word[i + 1]))
- {
- return true;
- }
- }
- return false;
- }
- static void PermuteRep(char[] arr, int start, int end)
- {
- if (!HasConsecutiveLetter(arr))
- {
- count++;
- }
- for (int left = end - 1; left >= start; left--)
- {
- for (int right = left + 1; right <= end; right++)
- {
- if (arr[left] != arr[right])
- {
- Swap(ref arr[left], ref arr[right]);
- PermuteRep(arr, left + 1, end);
- }
- }
- var firstElement = arr[left];
- for (int i = left; i <= end - 1; i++)
- {
- arr[i] = arr[i + 1];
- }
- arr[end] = firstElement;
- }
- }
- static void Swap<T>(ref T first, ref T second)
- {
- T oldFirst = first;
- first = second;
- second = oldFirst;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement