#include <iostream>
#include <string>
#include <cstdio>
#include <stdlib.h>
#include <map>
#define TRUE 1
#define FALSE 0
using namespace std;
int visit[10];
int number[11];
int oper[10];
int maxx = -1000000000;
int minn = 1000000000;
void dfs(int num, int loop, int numberofint, int index, int now)
{
int result = 0;
if (loop == numberofint - 1)
{
if (num > maxx)
maxx = num;
if (num < minn)
minn = num;
}
else
{
for (int i = 0; i < numberofint - 1; i++)
{
if (!visit[i])
{
switch (oper[i])
{
case 1:
result = num + number[index];
break;
case 2:
result = num - number[index];
break;
case 3:
result = num * number[index];
break;
case 4:
result = num / number[index];
break;
}
visit[i] = TRUE;
dfs(result, loop + 1, numberofint, index + 1, i);
}
}
}
visit[now] = FALSE;
}
int main(void)
{
int n, op;
int idx = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> number[i];
}
for (int i = 0; i < 4; i++)
{
cin >> op;
for (int j = 0; j < op; j++)
oper[idx++] = i + 1;
}
dfs(number[0], 0, n, 1, 0);
cout << maxx << "\n";
cout << minn;
return 0;
}
'성우리뷰' 카테고리의 다른 글
나무막대) 아츠기 나나미의 "踊ってみた, HEROINE 育成計画" (4) | 2020.08.08 |
---|---|
동적계획) 가장긴수열 (5) | 2020.08.04 |
나는야포켓몬마스타- (3) | 2020.08.04 |
18115)카드 스택 (2) | 2020.07.24 |
1260)dfs bfs (2) | 2020.07.22 |