문제
리뷰
next_permutation 으로 모든 순열을 구해서 풀었다.
k 개 중에 반드시 6개만 선택해서 가능한 순열을 전부 출력한다.
k는 최대 50이고, 주어진 k 중에 처음에는 0 으로 6개 뽑을 것을 표시하고 , 나머지들은 선택 안할거니까 1로 표시한다.
next_permutation 으로 순열을 출력하는데, 0으로 뽑힌것만 출력한다.
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void lotto(vector<int> &A, int N){
int ch[50] = {0, };
// 6부터 나머지는 1
for(int i = 6; i < N ; i++){
ch[i] = 1;
}
do{
for(int i = 0; i < N; i++){
if(!ch[i]) cout << A[i] << ' ';
}
cout << '\n';
}while(next_permutation(ch, ch+N));
cout << '\n';
return;
}
int main(void){
int k = 1;
int N = 0;
vector<int> A;
while(1){
scanf("%d", &N);
if(N == 0) break;
for(int i = 0; i < N; i++){
int num = 0;
cin >> num;
A.push_back(num);
}
lotto(A, N);
A.clear();
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
ABCDE 백준 13023 c++ (0) | 2020.09.06 |
---|---|
연결 요소의 개수 백준 11724 BFS (0) | 2020.09.06 |
퇴사 백준 14501 (0) | 2020.09.03 |
차이를 최대로 백준 10819번 c++ (0) | 2020.09.03 |
날짜계산 백준 1476번 (0) | 2020.09.03 |