Study hard
(c++)백준 6603번: 로또 본문
https://www.acmicpc.net/problem/6603
6603번: 로또
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는
www.acmicpc.net
[풀이]
k개의 수로 구성된 집합 S에서 6개의 수를 고르는 모든 방법을 구하는 문제이다.
고르는 수는 중복되지 않고, 순서를 바꾸는 경우는 세지 않으므로 조합을 구하면 된다.
#include <iostream>
#include <vector>
using namespace std;
int k;
vector<int>S(13);//집합 S
bool check[50];//선택한 숫자 true
//조합 구하기
void getSet(int idx, int cnt) {
if (cnt == 6) {
for (int i = 1; i <= 49; i++) {
if (check[i] == true)
cout << i << ' ';
}
cout << '\n';
return;
}
for (int i = idx; i < k; i++) {
if (check[S[i]] == true)continue;
check[S[i]] = true;
getSet(i, cnt + 1);
check[S[i]] = false;
}
}
void solution() {
while (1) {
cin >> k;
//종료 조건
if (k == 0)
break;
for (int i = 0; i < k; i++) {
cin >> S[i];
}
getSet(0, 0);
cout << '\n';
}
}
int main() {
solution();
return 0;
}
'백준 > 브루트 포스' 카테고리의 다른 글
(c++)백준 14500번: 테트로미노 (0) | 2020.08.25 |
---|---|
(c++)백준 15658번: 연산자 끼워넣기 (2) (0) | 2020.08.13 |
(c++)백준 14888번: 연산자 끼워넣기 (0) | 2020.08.13 |
(c++)백준 14225번: 부분수열의 합 (0) | 2020.08.11 |
(c++)백준 1182번: 부분수열의 합 (0) | 2020.08.10 |