문제 링크입니다: https://www.acmicpc.net/problem/6603
반복문을 사용해서도 풀 수 있는 것 같은데 언제나처럼 재귀호출을 이용해서 풀었습니다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int MAX = 6;
int k;
int lotto[MAX];
int arr[13];
//idx1은 arr의 인덱스, idx2는 lotto의 인덱스
void printLotto(int idx1, int idx2)
{
//6개 원소 모두 모였을 경우 출력
if (idx2 == MAX)
{
for (int i = 0; i < MAX; i++)
cout << lotto[i] << " ";
cout << endl;
return;
}
//순차적으로 넣어본다
for (int i = idx1; i < k; i++)
{
lotto[idx2] = arr[i];
printLotto(i + 1, idx2 + 1);
}
}
int main(void)
{
while (1)
{
cin >> k;
if (k == 0)
break;
for (int i = 0; i < k; i++)
cin >> arr[i];
printLotto(0, 0);
cout << endl;
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1697번 숨바꼭질 (7) | 2018.06.19 |
---|---|
백준 1966번 프린터 큐 (0) | 2018.06.18 |
백준 7579번 앱 (1) | 2018.06.18 |
백준 2688번 줄어들지 않아 (0) | 2018.06.17 |
백준 15724번 주지수 (0) | 2018.06.17 |