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' 카테고리의 다른 글
Get Middle in ListNode(ListNode에서 중간 값 찾기) (0) | 2024.06.28 |
---|---|
동전 교환(거스름돈) 알고리즘 (0) | 2019.05.06 |
최대 연속 부분수열의 합 (0) | 2019.05.05 |
최장 공통 부분 수열 (0) | 2019.05.05 |
최장 증가 부분 수열 (0) | 2019.05.05 |