본문 바로가기
Algorithm

순열(Permutation)-c#

by Doromi 2023. 12. 17.
728x90
반응형
순열(Permutation)은 주어진 집합의 원소들을 나열하는 모든 경우의 수를 말합니다
using System;

class Program
{
    static void Main()
    {
        string[] set = { "A", "B", "C" };
        Permute(set, 0, set.Length - 1);
    }

    static void Permute(string[] set, int start, int end)
    {
        if (start == end)
        {
            PrintArray(set);
            return;
        }

        for (int i = start; i <= end; i++)
        {
            Swap(ref set[start], ref set[i]);
            Permute(set, start + 1, end);
            Swap(ref set[start], ref set[i]);  // 원복
        }
    }

    static void Swap(ref string a, ref string b)
    {
        string temp = a;
        a = b;
        b = temp;
    }

    static void PrintArray(string[] arr)
    {
        Console.WriteLine(string.Join(", ", arr));
    }
}

재귀 함수가 호출되면 스택에 저장하게 되고, LIFO(후입 선출) 구졸 마지막에 호출된 함수를 완료하고 그 값을 아래로 전달하여 최초로 호출된 함수에서 값을 계산한다.

 

 

728x90
반응형

'Algorithm' 카테고리의 다른 글

동전 교환(거스름돈) 알고리즘  (0) 2019.05.06
최대 연속 부분수열의 합  (0) 2019.05.05
최장 공통 부분 수열  (0) 2019.05.05
최장 증가 부분 수열  (0) 2019.05.05
BFS와 DFS  (0) 2019.05.02