#include <iostream>
#define MAX 9
int arr[MAX];
bool check[MAX];
using namespace std;
void BackTracking(int Count, int N, int M, int Start){
if(Count==M){
for(int i=0; i<M; i++)
cout << arr[i] << " ";
cout << "\n";
return;
}
for(int i=Start; i<=N; i++){
if(check[i]==false){
check[i] = true;
arr[Count] = i;
BackTracking(Count+1,N,M,i+1);
check[i] = false;
}
else if(check[i]==true) continue;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int count = 0;
int n,m = 0;
int start = 1;
cin >> n >> m;
BackTracking(count,n,m,start);
return 0;
}
별 문제 아니였으나, 꽤나 시간을 잡아먹었던 문제.
다름이 아닌 마지막에 딱 한가지 실수를 저질렀기 때문이었다.
18번째 줄에 BackTracking(Count+1, N, M, i+1)을 오답에서는 BackTracking(Count+1, N, M, Start+1)로 적어버렸다.
Start+1로 적을 경우, 답변은 하단과 같이 나온다
1 2
1 3
1 4
2 3
2 4
3 2
3 4
4 2
4 3
Start + 1이 답이 안되는 이유는 어렴풋이 알겠으나,
왜 상단과 같은 답이 출력되는건지는 제대로 이해하고 넘어갈 필요가 있어보인다.
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#2580번 스도쿠 (c++) (0) | 2020.04.20 |
---|---|
#9663번 N-Queen (C++) (0) | 2020.03.22 |
#15649번 N과M(1) (c++) (0) | 2020.03.15 |
#10997번 별 찍기 - 21 (c++) (0) | 2020.03.15 |
#2446번 별 찍기 - 9 (c++) (0) | 2020.03.15 |