반응형
#include <bits/stdc++.h>
using namespace std;
int n,r,ch[20],path[20],cnt;
vector<int> v;
//----
void DFS(int L){
if(L==r){
for(int i=0; i<L;i++){
printf("%d ",path[i]);
}
cnt++;
printf("\n");
}
else{
for(int i=0; i<v.size(); i++){
if(ch[v[i]]==0){
path[L]= v[i];
ch[v[i]] = 1;
DFS(L+1);
ch[v[i]] = 0;
}
}
}
}
int main(){
//freopen("input.txt.txt","rt",stdin);
ios::sync_with_stdio(false);
cin.tie(0);
int tmp;
scanf("%d %d",&n,&r);
for(int i=0; i<n; i++){
scanf("%d", &tmp);
v.push_back(tmp);
}
DFS(0);
printf("%d",cnt);
}
DFS를 활용해 순열을 구할 수 있다.
반응형
'Algorithm > etc' 카테고리의 다른 글
미로 최단거리 BFS 활용 (0) | 2022.01.22 |
---|---|
피자 배달 거리 문제 - DFS 활용 , 순열 조합 활용 (0) | 2022.01.22 |
벨만-포드 알고리즘 (0) | 2022.01.20 |
다익스트라 알고리즘 (0) | 2022.01.20 |
Prim MST (0) | 2022.01.19 |