재귀함수 이용
void go(vector<int> a, int index, int cur, int plus, int minus, int mul, int div)
{
if(index == a.size()-1)
{
if( cur < min_num)
min_num = cur;
if(cur > max_num)
max_num = cur;
return;
}
else
{
if(minus != 0 )
go(a,index+1,cur-a[index+1],plus,minus-1,mul,div);
if(div != 0)
go(a,index+1,cur/a[index+1],plus,minus,mul,div-1);
if(plus != 0)
go(a,index+1,cur+a[index+1],plus-1,minus,mul,div);
if(mul != 0)
go(a,index+1,cur*a[index+1],plus,minus,mul-1,div);
}
}
pair<int,int> calc(vector<int> &a, int index, int cur, int plus, int minus, int mul, int div)
{
int n = a.size();
if(index == n) {
return make_pair(cur,cur);
}
vector<pair<int,int>> res;
if(plus > 0) {
res.push_back(calc(a,index+1,cur+a[index],plus-1,minus,mul,div));
}
vector<pair<int,int>> res;
if(minus > 0) {
res.push_back(calc(a,index+1,cur-a[index],plus,minus-1,mul,div));
}
vector<pair<int,int>> res;
if(mul > 0) {
res.push_back(calc(a,index+1,cur*a[index],plus,minus,mul-1,div));
}
vector<pair<int,int>> res;
if(div > 0) {
res.push_back(calc(a,index+1,cur/a[index],plus,minus,mul,div-1));
}
auto ans = res[0];
for (auto p : res) {
if(ans.first < p.firts) {
ans.first = p.first;
}
if(ans.second > p.second) {
ans.second = p.second;
}
}
return ans
}
auto 사용과 pair사용, for(auto p : res) 사용 익히기