μΉ΄ν
κ³ λ¦¬ μμ
[Baekjoon] 15663λ²: Nκ³Ό M (9)
hades1
2024. 8. 12. 22:13
π₯ λ¬Έμ
https://www.acmicpc.net/problem/15663
π μ€κ³
μ²μμλ λ°±νΈλνΉμ μ¬μ©νμ¬ μ¬μ μμΌλ‘ λͺ¨λ κ²½μ°λ₯Ό ꡬν ν, μ€λ³΅μ μ κ±°νλ λ°©μμ μ¬μ©νμΌλ, λ¬Έμ μλμ λ§μ§ μλ κ² κ°μ λ€λ₯Έ λ°©λ²μ κ³ λ―Όνλ€.
μ΄ λ¬Έμ μμμ ν΅μ¬μ λ΅μ ꡬμ±νλ μμ΄μμ κ°μ μΈλ±μ€μμλ μ€λ³΅λ μκ° μ€λ©΄ μλκ³ , λ€λ₯Έ μΈλ±μ€μμλ μ€λ³΅μ΄ κ°λ₯νλ€. λ°λΌμ, κ°μ μΈλ±μ€μμ μ€λ³΅μ λ°©μ§νλλ‘ κ·Έ μΈλ±μ€μμ λ§μ§λ§μ μ¬μ©ν μλ₯Ό μ μ₯νμ¬ λ€λ₯Έμ§ νμΈν΄μΌ νλ€.
π νμ΄1
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, m;
vector<int> number(8);
vector<bool> visited(8);
vector<int> temp;
vector<vector<int>> result;
void bt(int count) {
if (count == m) {
result.push_back(temp);
}
for (int i = 0; i < n; i++) {
if (!visited[i]) {
visited[i] = true;
temp.push_back(number[i]);
bt(count + 1);
temp.pop_back();
visited[i] = false;
}
}
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> number[i];
}
sort(number.begin(), number.begin() + n);
bt(0);
sort(result.begin(), result.end());
result.erase(unique(result.begin(), result.end()), result.end());
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < m; j++) {
cout << result[i][j] << " ";
}
cout << "\n";
}
return 0;
}
π νμ΄2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, m;
vector<int> number(8);
vector<bool> visited(8);
vector<int> temp;
void bt(int count) {
if (count == m) {
for (int i = 0; i < m; i++) {
cout << temp[i] << " ";
}
cout << "\n";
}
int same_level_last = 0;
for (int i = 0; i < n; i++) {
if (!visited[i] && same_level_last != number[i]) {
same_level_last = number[i];
visited[i] = true;
temp.push_back(number[i]);
bt(count + 1);
temp.pop_back();
visited[i] = false;
}
}
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> number[i];
}
sort(number.begin(), number.begin() + n);
bt(0);
return 0;
}
π λ νΌλ°μ€
π λ©λͺ¨