Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • BFS
  • 다이나믹 프로그래밍
  • django
  • Network
  • 백트래킹
  • Kubernetes
  • DFS
  • 프로그래머스
  • docker
  • boj

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

Algorithm/DS, algorithms

Stack Permutation C++

2021. 4. 19. 20:26

순열을 구하기위해 dfs를 사용했는데 visit 배열 대신 stack을 사용해서 구현해보았음

 

n이 8이 넘어가면 하루종일 걸려요.. 모든 경우의 수를 출력해주기 때문에 어쩔 수 없다

 

if(node == N) 부분의 for 문을 보면 N이 i에 대한 조건으로 있는데 이 N을 입력받은 N보다 작게 바꿔주면

ex ) N이 6일 때 4로 설정

-> 6까지의 숫자 중 4개를 골라 만들 수 있는 모든 순열이 출력된다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
using namespace std;
 
vector<int> _stack;
int N, check[10] = {0, };
 
void dfs_stack(int node){
    if(node == N){
        for(int i = 0; i < N; i++){
            cout << _stack[i] << " ";
        }
        cout << endl;
        return;
    }
    for(int i = 0; i < N; i++){
        if(check[i] == 0){
            _stack.push_back(i+1);
            check[i] = 1;
            dfs_stack(node+1);
            _stack.pop_back();
            check[i] = 0;
        }
    }
}
 
int main(){
    cin >> N;
    dfs_stack(0);
    return 0;
}
 
Colored by Color Scripter
cs

'Algorithm > DS, algorithms' 카테고리의 다른 글

[자료구조] Single Linked List 예제 코드 #2 (C)  (2) 2021.06.14
[자료구조] Single Linked List 예제 코드#1 (C)  (0) 2021.06.14
힙 정렬(heap sort) <priority queue> C++  (0) 2021.05.29
Minimum Spanning Tree (MST) - Kruskal  (0) 2021.05.10
Union Find Basic Code C++  (0) 2021.04.19
    'Algorithm/DS, algorithms' 카테고리의 다른 글
    • [자료구조] Single Linked List 예제 코드#1 (C)
    • 힙 정렬(heap sort) <priority queue> C++
    • Minimum Spanning Tree (MST) - Kruskal
    • Union Find Basic Code C++

    티스토리툴바