#작성 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
int visit[8];
vector<int> v;
void dfs(int cnt){
if( cnt == M ){
for(int i=0; i<v.size(); i++){
cout<<v[i]<<' ';
}
cout<<'\n';
return; // 출력 후에는 dfs함수를 반드시 종료시켜야한다
}
for(int i=1; i<=N; i++){
if( visit[i]==M ) continue; // 최대 M번까지 방문할 수 있도록
visit[i]++;
v.push_back(i);
dfs(cnt+1);
visit[i]--;
v.pop_back();
}
}
int main(){
cin>>N>>M;
dfs(0);
return 0;
}
##
앞의 문제들과 달리 중복순열을 구해야 한다.
visit배열을 int 형 배열로 선언하여 한 숫자를 최대 M번 사용할 수 있도록 했다.
'BOJ' 카테고리의 다른 글
BOJ 9663번 :: N-Queen (0) | 2019.11.26 |
---|---|
BOJ 15652번 :: N과 M(4) (0) | 2019.11.25 |
BOJ 15650번 :: N과 M(2) (0) | 2019.11.24 |
BOJ 15649번 :: N과 M(1) (0) | 2019.11.24 |
BOJ 10814번 :: 나이순 정렬 (0) | 2019.11.24 |