BFS를 적용해서 풀어야 하는 문제 같은데 … 저는 순열로만 풀어버렸습니다.
https://www.acmicpc.net/problem/14888
#include <bits/stdc++.h>
using namespace std;
int n, a, b, c, d;
vector<int> v, m, answerV;
// 순열 값으로 계산 후 결과 백터에 값 추가
void Calculate(vector<int>& m, vector<int>& answerV)
{
int answer = 0;
answer = v[0];
for (int i = 0; i < m.size(); i++)
{
if (m[i] == 0) answer += v[i + 1];
if (m[i] == 1) answer -= v[i + 1];
if (m[i] == 2) answer *= v[i + 1];
if (m[i] == 3) answer /= v[i + 1];
}
answerV.push_back(answer);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int max = 0;
int min = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
int j = 0;
cin >> j;
v.push_back(j);
}
cin >> a >> b >> c >> d;
// 사칙연산 값을 m에 할당
for (int i = 0; i < a; i++)
{
m.push_back(0);
}
for (int i = 0; i < b; i++)
{
m.push_back(1);
}
for (int i = 0; i < c; i++)
{
m.push_back(2);
}
for (int i = 0; i < d; i++)
{
m.push_back(3);
}
// 사칙연산 값을 기준으로 순열 생성
do
{
Calculate(m, answerV);
} while (next_permutation(m.begin(), m.end()));
sort(answerV.begin(), answerV.end());
cout << answerV.back() << '\n';
cout << answerV.front() << '\n';
}
BFS를 적용해서 풀어야 하는 문제 같은데 … 저는 순열로만 풀어버렸습니다.
https://www.acmicpc.net/problem/14888
#include <bits/stdc++.h>
using namespace std;
int n, a, b, c, d;
vector<int> v, m, answerV;
// 순열 값으로 계산 후 결과 백터에 값 추가
void Calculate(vector<int>& m, vector<int>& answerV)
{
int answer = 0;
answer = v[0];
for (int i = 0; i < m.size(); i++)
{
if (m[i] == 0) answer += v[i + 1];
if (m[i] == 1) answer -= v[i + 1];
if (m[i] == 2) answer *= v[i + 1];
if (m[i] == 3) answer /= v[i + 1];
}
answerV.push_back(answer);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int max = 0;
int min = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
int j = 0;
cin >> j;
v.push_back(j);
}
cin >> a >> b >> c >> d;
// 사칙연산 값을 m에 할당
for (int i = 0; i < a; i++)
{
m.push_back(0);
}
for (int i = 0; i < b; i++)
{
m.push_back(1);
}
for (int i = 0; i < c; i++)
{
m.push_back(2);
}
for (int i = 0; i < d; i++)
{
m.push_back(3);
}
// 사칙연산 값을 기준으로 순열 생성
do
{
Calculate(m, answerV);
} while (next_permutation(m.begin(), m.end()));
sort(answerV.begin(), answerV.end());
cout << answerV.back() << '\n';
cout << answerV.front() << '\n';
}