728x90
반응형
https://www.acmicpc.net/problem/6603
#include <bits/stdc++.h>
using namespace std;
int k;
int num[50], arr[50];
bool isused[50];
void backtrack(int k, int n){
if(k==6){
bool flag = true;
int tmp = -1;
for(int i=0; i<6; i++){ // 오름차순 체크
if(tmp > arr[i]) flag = false;
tmp = arr[i];
}
if(flag){
for(int i=0; i<6; i++)
cout << arr[i] << ' ';
cout << '\n';
}
return;
}
int st = 0;
if(k!=0) st = k-1;
for(int i=st; i<n; i++){
if(!isused[i]){
arr[k] = num[i];
isused[i] = 1;
backtrack(k+1, n);
isused[i] = 0;
}
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
while(1){
cin >> k;
if(k==0) break;
for(int i=0; i<k; i++){
cin >> num[i];
}
backtrack(0, k);
cout << '\n';
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/BFS/C++] 1697번 숨바꼭질 * (0) | 2023.01.10 |
---|---|
[백준/백트래킹/C++] 10971번 외판원 순회2 * (0) | 2023.01.10 |
[백준/백트래킹/C++] 15652번 N과 M (4) (0) | 2023.01.08 |
[백준/백트래킹/C++] 15651번 N과 M (3) (0) | 2023.01.08 |
[백준/백트래킹/C++] 15650번 N과 M (2) (조합) (0) | 2023.01.08 |