https://www.acmicpc.net/problem/15663

 

15663번: N과 M (9)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

https://www.acmicpc.net/problem/15664

 

15664번: N과 M (10)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

15663

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int N, M;
int arr[8];
int num[8];
bool chk[8];

void combi(int index) {
	if (index == M) {
		for (int i = 0; i < M; i++)
		{
			cout << num[i]<<" ";
		}
		cout << "\n";
		return;
	}
	int xx = 0;
	for (int i = 0; i < N; i++)
	{
		if (!chk[i] && arr[i] != xx) {
			num[index] = arr[i];
			xx = num[index];
			chk[i] = true;
			combi(index + 1);
			chk[i] = false;
		}
	}
}

int main() {
	cin >> N >> M;
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
	}
	sort(arr, arr + N);

	combi(0);

	return 0;
}

15664

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int N, M;
int arr[8];
int num[8];
bool chk[8];

void combi(int index, int chk1) {
	if (index == M) {
		for (int i = 0; i < M; i++)
		{
			cout << num[i] << " ";
		}
		cout << "\n";
		return;
	}
	int xx = 0;
	for (int i = chk1; i < N; i++)
	{
		if (!chk[i] && arr[i] != xx) {
			num[index] = arr[i];
			xx = num[index];
			chk[i] = true;
			combi(index + 1, i);
			chk[i] = false;
		}
	}
}

int main() {
	cin >> N >> M;
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
	}
	sort(arr, arr + N);

	combi(0,0);

	return 0;
}

+ Recent posts