#include<iostream>
using namespace std;
int t,n;
int isVisited[7];
int answer[7];
// 3!과 2!의 모든 경우의 수를 재귀함수를 이용하여 연습하자!
void dfs(int depth){
if(depth == n+1){
for(int i=1; i<=n; i++){
printf("%d ",answer[i]);
}
printf("\n");
}
// for문
for(int i=1; i<=n; i++){
if(isVisited[i] == 0){
isVisited[i] = 1;
answer[depth] = i;
dfs(depth+1);
isVisited[i] = 0;
answer[depth] = 0;
}
}
}
int main()
{
scanf("%d",&t);
for(int i=1; i<=t; i++){
scanf("%d",&n);
for(int i=1; i<=n; i++){
isVisited[i] = 0;
}
dfs(1);
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[BOJ 2677] 단지번호 붙이기 (2) (0) | 2019.02.20 |
---|---|
[Algorithm] 외판원 순회 (0) | 2019.02.20 |
[Algorithm] 순열 분석 (0) | 2019.02.12 |
[BOJ 1242] 소풍 (0) | 2019.02.11 |
[BOJ 1158] 조세퍼스 문제 (0) | 2019.02.11 |