반응형
#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

+ Recent posts