https://www.acmicpc.net/problem/15663
https://www.acmicpc.net/problem/15664
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;
}
'개발자 > algorithm' 카테고리의 다른 글
백준 2042번 : 구간 합 구하기 (c++) (0) | 2020.08.17 |
---|---|
백준 5557번 : 1학년 (c++) (0) | 2020.08.17 |
백준 13251번 : 조약돌 꺼내기 (c++) (0) | 2020.08.17 |
백준 1722번 : 순열의 순서 (c++) (0) | 2020.08.17 |
백준 5568번 : 카드놓기 (c++) (0) | 2020.08.17 |