레야몬
[C++] 15654번 N과 M (5) - 백트래킹 본문
#include <iostream>
#include <algorithm>
#define MAX_N 9
using namespace std;
bool visit[MAX_N]; //방문하였는가?
int map[MAX_N]; //입력받은 숫자들
int b[MAX_N]; //탐색한 숫자가 저장되는 벡터
int N, M; //N개의 자연수와 길이가 M인 수열
void f(int m) //m개를 저장함
{
if(m==M) {
for(int i=0; i<m; i++)
cout << map[b[i]] << ' ';
cout << '\n';
return;
}
for(int i=0; i<N; i++) {
if(visit[i]) continue;
visit[i]=true;
b[m]=i;
f(m+1);
visit[i]=false;
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N >> M;
for(int i=0; i<N; i++)
cin >> map[i];
sort(map, map+N); //오름차순으로 정렬하기
f(0);
return 0;
}
백트래킹이 맞는 것 같네요. 문제를 풀고나니 왜 이게 백트래킹이지 싶었는데... 암튼 밑에 참고한 사이트가 있어요
<C++ vector>
https://blockdmask.tistory.com/70
[C++] vector container 정리 및 사용법
안녕하세요. BlockDMask 입니다. 오늘은 C++ STL의 sequence container 중에 정말 자주 쓰는 vector에 대해서 알아보겠습니다. <목차> 1) vector container 란? 2) vector의 사용 3) vector의 생성자와 연산..
blockdmask.tistory.com
<C++ sort>
https://m.blog.naver.com/ndb796/221227975229
8. C++ STL sort() 함수 다루기 ①
지난 시간까지 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬의 개념에 대해 이해하고 간단한 프로...
blog.naver.com
※현재 고등학교 등교중인 학생입니다. 이제 알고리즘을 본격적으로 공부하기 시작해서 아직 초보입니다. 혹시 제가 잘못 알고있는 점이나 더 좋은 풀이 방법이 있어 댓글에 남겨주시면 감사히 하나하나 열심히 읽어보겠습니다. 좋아요, 단순한 댓글 한마디라도 저에겐 큰 힘이 됩니다! 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
[C++] 1005번 ACM Craft - DP, 위상 정렬, DFS (0) | 2022.09.20 |
---|---|
[C++] 1197번 최소 스패닝 트리 - 최소 스패닝 트리, Union-Find (2) | 2022.09.07 |
[C++] 15650번 N과 M (2) - 백트래킹 (0) | 2022.09.06 |
[C++] 13549번 숨바꼭질 3 - 0-1 BFS (0) | 2022.09.06 |
[C++] 12865번 평범한 배낭 - DP, 배낭 문제 (0) | 2022.09.05 |
Comments