본문 바로가기

알고리즘

[Algorithm] 순열 복습

#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