버그 해결을 위한 모든 질문을 던져
–3 votes
274 views
예를 들면 "A","B","C", 가잇으면  이걸 배열하는 방법의 모든 경우의수를 구해서 한글 순서로 따로따로 어떻게배열하나요

예를 들면

ABC

ACB

BAC

처럼 모든 경우의수를 출력시켜주는 프로그램을 앱 인벤터로 만들고있는데 일일히 단어를 집어넣는것 말고 반복문이나 함수를 이용해서 리스트에 저장해주는 방법을 알고싶습니다
asked (-1 point)
재 태그 , 274 views

1 답변

0 votes
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;
}
answered (29 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

558 질문
717 answers
694 댓글
118,268 users