A B C 가 있다고 할때, 가장 순서가 앞에 오는 것은 A입니다. 그다음은 B, 그다음은 C입니다.
들어갈 문자를 맨처음에 정렬합니다.
재귀함수를 만들고 반복문을 돌려보세요.
밑의 코드 보시고 이해하시면 될듯합니다.
#include <iostream>
static constexpr int MaxLetters = 6;
char Characters[MaxLetters] = { 'A','B','C','D', 'E', 'F' };
bool AlreadyUse[MaxLetters] = { false, };
void Solutions(int CurTryCnt, char* Buffer)
{
if (CurTryCnt == MaxLetters)
{
std::cout << Buffer << std::endl;
return;
}
for (int i = 0; i < MaxLetters; ++i)
{
if (true == AlreadyUse[i])
continue;
Buffer[CurTryCnt] = Characters[i];
AlreadyUse[i] = true;
Solutions(CurTryCnt + 1, Buffer);
AlreadyUse[i] = false;
}
return;
}
int main()
{
char Buffer[MaxLetters + 1] = { 0, };
Solutions(0, Buffer);
return 0;
}