How to generate all possible permutations and combinations of an array of chars in C#

1 Answer

0 votes
using System;

public class PermutationsAndCombinations
{
    // Swap two characters in an array
    static void Swap(char[] arr, int i, int j) {
        char tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

    // Print array of chars
    static void PrintArray(char[] arr, int size) {
        for (int i = 0; i < size; i++) {
            Console.Write(arr[i] + " ");
        }
        Console.WriteLine();
    }

    // Recursive function to generate permutations
    static void Permute(char[] arr, int l, int r) {
        if (l == r) {
            PrintArray(arr, r + 1);
            return;
        }
        for (int i = l; i <= r; i++) {
            Swap(arr, l, i);
            Permute(arr, l + 1, r);
            Swap(arr, l, i); // backtrack
        }
    }

    // Generate all combinations using bitmask
    static void GenerateCombinations(char[] arr, int size) {
        for (int mask = 1; mask < (1 << size); mask++) {
            for (int i = 0; i < size; i++) {
                if ((mask & (1 << i)) != 0) {
                    Console.Write(arr[i] + " ");
                }
            }
            Console.WriteLine();
        }
    }

    public static void Main(string[] args)
    {
        char[] input = { 'a', 'b', 'c' };
        int size = input.Length;

        Console.WriteLine("All permutations:");
        Permute(input, 0, size - 1);

        Console.WriteLine("\nAll combinations:");
        GenerateCombinations(input, size);
    }
}




/*
run:
 
All permutations:
a b c 
a c b 
b a c 
b c a 
c b a 
c a b 

All combinations:
a 
b 
a b 
c 
a c 
b c 
a b c 
 
*/

 



answered 15 hours ago by avibootz

Related questions

...