๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int N,add,sub,mul,divd;
int max_v=-1e9-1, min_v = 1e9+1;
void backtrack(int result,int index, vector<int>&num, int add, int sub, int mul, int divd){
if(index==N){
max_v = max(max_v, result);
min_v = min(min_v, result);
return;
}
if(add>0) backtrack(result+num[index], index+1, num, add-1, sub, mul, divd);
if(sub>0) backtrack(result-num[index], index+1, num, add, sub-1, mul, divd);
if(mul>0) backtrack(result*num[index], index+1, num, add, sub, mul-1, divd);
if(divd>0) backtrack(result/num[index], index+1, num, add, sub, mul, divd-1);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
vector<int>num(N);
for(int i=0; i<N; i++) cin>>num[i];
cin>>add>>sub>>mul>>divd;
backtrack(num[0],1,num,add,sub,mul,divd);
cout<<max_v<<'\n'<<min_v;
}
ํ์ด
๋ชจ๋ ์ฐ์ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋์๋ณด๋ฉฐ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ฐฑ์ ํ๋ ์์ ํ์์ ํตํด ๊ตฌํํ์ต๋๋ค. ์ฒ์์ ์ค๊ณ๋ง ์ด๋ป๊ฒ ํ ์ง ๋ ์ฌ๋ฆฌ๋ฉด ์ฌ์ด ๋ฌธ์ ์๋๋ฐ ์์ฆ ์๊ณ ๋ฆฌ์ฆ์ ์ ํ๋ค ๋ณด๋ ๋จธ๋ฆฌ๊ฐ ๊ตณ์ด์ next_permuation์ ํตํด ์์ด๋ก ๊ตฌํํด๋ณด๋ ค๋ค๊ฐ ์ํ๋ ค์ ํผ๋ฅผ ๋ณธ ๋ฌธ์ ์์ต๋๋ค.๐ข
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1991๋ฒ - ํธ๋ฆฌ ์ํ (0) | 2022.03.08 |
---|---|
[๋ฐฑ์ค,c++] 1240๋ฒ - ๋ ธ๋์ฌ์ด์ ๊ฑฐ๋ฆฌ (0) | 2022.03.08 |
[๋ฐฑ์ค,c++] 21918๋ฒ - ์ ๊ตฌ (0) | 2022.03.01 |
[๋ฐฑ์ค,c++] 10211๋ฒ - Maximum Subarray (0) | 2022.01.04 |
[๋ฐฑ์ค,c++] 9625๋ฒ - BABBA (0) | 2021.12.29 |
[๋ฐฑ์ค,c++] 15688๋ฒ - ์ ์ ๋ ฌํ๊ธฐ5 (0) | 2021.12.14 |
๋๊ธ