온라인저지
[BOJ] 6603번: 로또
plzfday
2018. 8. 2. 01:47
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;
}