Algorithm/백준

[백준] 15654번: N과 M(5)

youngine 2021. 1. 30. 21:10

 

 

15654번: N과 M (5)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net

 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int n, m;
vector<int>num;

void dfs(int size,int now, vector<int>arr,vector<int>visit) {

	if (size < now) {
		for (int i = 0;i < arr.size();i++) {
			cout << arr[i] << ' ';
		}
		cout << '\n';
		return;
	}

	for (int i = 0;i < num.size();i++) {
		if (!visit[i]) {
			visit[i] = true;
			arr.push_back(num[i]);
			dfs(size, now + 1, arr, visit);
			visit[i] = false;
			arr.pop_back();
		}
	}
	
}

int main() {
	cin >> n >> m;

	for (int i = 0,t=0;i < n;i++) {
		cin >> t;
		num.push_back(t);
	}
	sort(num.begin(), num.end());
	dfs(m, 1,vector<int>(),vector<int>(n+1,0));
}