일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 세그먼트 트리
- 회고록
- 너비 우선 탐색
- DP
- back propagation
- tensorflow
- 백트래킹
- c++
- 알고리즘
- 다익스트라
- Overfitting
- pytorch
- object detection
- 자바스크립트
- 분할 정복
- 이분 탐색
- 가끔은 말로
- dropout
- 우선 순위 큐
- NEXT
- 플로이드 와샬
- 2023
- dfs
- 문자열
- BFS
- 크루스칼
- lazy propagation
- 가끔은_말로
- 조합론
- 미래는_현재와_과거로
Archives
- Today
- Total
Doby's Lab
백준 9742번: 순열 (C++) 본문
https://www.acmicpc.net/problem/9742
9742번: 순열
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전
www.acmicpc.net
Solved By: BackTracking
찾아야 하는 순서가 백트래킹으로 구해지는 순서 안에 있다면 결과 string에 해당 문자열을 할당해주고, 아니라면 빈 문자열을 반환하도록 아무것도 할당하지 않았습니다.
#include <iostream>
#include <vector>
using namespace std;
string s;
int n;
int cnt;
string res;
bool visited[10];
void backTracking(string a){
if(a.size() == s.size()){
++cnt;
if(cnt == n){
res = a;
}
return;
}
for(int i = 0; i < s.size(); i++){
if(!visited[i]){
visited[i] = true;
backTracking(a + s[i]);
visited[i] = false;
}
}
}
int main(){
while(cin >> s >> n){
cnt = 0; res = "";
cout << s << ' ' << n << " = ";
backTracking("");
if(res == "") cout << "No permutation";
else cout << res;
cout << '\n';
}
}
728x90
'PS > BOJ' 카테고리의 다른 글
백준 15203번: Police Station (C++) (0) | 2022.05.05 |
---|---|
백준 13059번: Tourists (C++) (0) | 2022.05.05 |
백준 7742번: Railway (C++) (0) | 2022.05.03 |
백준 3176번: 도로 네트워크 (C++) (0) | 2022.05.03 |
백준 1761번: 정점들의 거리 (C++) (0) | 2022.05.03 |