본문 바로가기
온라인저지

[BOJ] 6603번: 로또

by plzfday 2018. 8. 2.

https://www.acmicpc.net/problem/6603

재귀함수로 구현할 수 있는데, 현재 인덱스를 선택하거나 안 하거나 둘 다 재귀함수로 호출을 해서 모든 경우를 출력할 수 있게 된다.

매개변수는 인덱스와 카운트로 설정해줘서 카운트가 6이되면 추가한 숫자들을 출력하도록 하면 된다. 출력용 배열은 vector를 사용할 수도 있지만 일반 배열을 사용하려면 P[cnt + 1](출력용) = S[idx + 1](기존 배열)로 변경해주면 된다.

#include <cstdio>
using namespace std;

int s[50], b[7], N;

void printAll(int idx, int cnt)
{
    if (cnt == 6)
    {
        for (int i = 1; i <= 6; ++i)
            printf("%d ", b[i]);
        puts("");
        return;
    }
    if (idx >= N)
        return;
    b[cnt + 1] = s[idx + 1];
    printAll(idx + 1, cnt + 1);
    printAll(idx + 1, cnt);
}

int main()
{
    while (true)
    {
        scanf("%d", &N);
        if (N == 0)
            break;

        for (int i = 1; i <= N; ++i)
            scanf("%d", &s[i]);
        printAll(0, 0);
        puts("");
    }
    return 0;
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 2775번: 부녀회장이 될테야  (0) 2018.08.04
[BOJ] 10250번: ACM 호텔  (0) 2018.08.04
[BOJ] 1967번: 트리의 지름  (0) 2018.08.02
[BOJ] 2178번: 미로 탐색  (0) 2018.08.02
[BOJ] 11383번: 뚊  (0) 2018.08.02
[BOJ] 4999번: 아!  (0) 2018.08.02

댓글