입력 코드
#include <stdio.h>
int max=-1000000002, min=100000002;
int n;
int p,m,t,d;
int g[12];
void dfs(int a,int b,int p,int m,int t,int d)
{
if(a==n)
{
if(max<b) max=b;
if(min>b) min=b;
return;
}
else
{
if(p>=1)
dfs(a+1,b+g[a],p-1,m,t,d);
if(m>=1)
dfs(a+1,b-g[a],p,m-1,t,d);
if(t>=1)
dfs(a+1,b*g[a],p,m,t-1,d);
if(d>=1)
dfs(a+1,b/g[a],p,m,t,d-1);
}
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&g[i]);
}
scanf("%d %d %d %d",&p,&m,&t,&d);
dfs(1,g[0],p,m,t,d);
printf("%d\n%d",max,min);
}
출처 www.acmicpc.net/source/10501819
코드 설명
#백트래킹 #브루트포스 알고리즘
문제 출처
'C' 카테고리의 다른 글
#102. [백준_C언어] 11723 : 집합 \ 비트마스킹 (0) | 2021.02.27 |
---|---|
#101. [백준_C언어] 15649 : N과 M (1) \ 백트래킹 (0) | 2021.02.26 |
#99. [백준_C언어] 2309 : 일곱 난쟁이 \ 브루트포스 알고리즘 (0) | 2021.02.25 |
#98. [백준_C언어] 1065 : 한수 \ 브루트포스 알고리즘 (0) | 2021.02.25 |
#97. [백준_C언어] 1789 : 수들의 합 \ 이분 탐색 (0) | 2021.02.24 |