적용한 알고리즘 : 재귀
아이디어 : X
생각의 흐름 / 절차 : X
교훈 / 생각했던 점들 / 복기 :
뽑을 때 뽑지 않을 때를 각각 구분해서 재귀를 돌리자.
재귀는 사전 순을 나타낼 때 괜찮은 방법이다.
재귀가 약하니까 몇 문제 더 해봅시다.
<코드>
#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
vector<int> lotto;
void solve(vector<int> &a, int index, int cnt){
if (cnt == 6){
for (int num : lotto){
printf("%d ", num);
}
printf("\n");
return;
}
int n = a.size();
if (n == index) return;
//index 번째 고름
lotto.push_back(a[index]);
solve(a, index + 1, cnt + 1);
//index 번째 안고름
lotto.pop_back();
solve(a, index + 1, cnt);
}
int main(){
while (true){
int n;
scanf("%d", &n);
if (n == 0){
return 0;
}
vector<int> a(n);
for (int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
solve(a, 0, 0);
printf("\n");
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 14500번 테트리미노 (126) | 2019.11.08 |
---|---|
[백준] 15658번 연산자 끼워넣기 (2) (124) | 2019.11.08 |
[백준] 14888번 연산자 끼워넣기 (124) | 2019.11.08 |
[백준] 14225번 부분수열의 합 (0) | 2019.11.08 |
[백준] 1182번 부분수열의 합 (0) | 2019.11.08 |