반응형
728x170
전형적인 백트래킹문제이면서
조건이 많이 달린 문제다.
쉬웠다.
https://www.acmicpc.net/problem/16938
#맞은 풀이
#include <bits/stdc++.h>
using namespace std;
int N,L,R,X;
vector<int> level;
//조건 난이도 합 L보다 크거나 같음
// 난이도 합 R보다 작거나 같음
// 난이도 차 X보다 크거나 같음
int ans;
void func(int cnt, int idx, int maxi, int mini, int sum){
if(cnt == N){
if(maxi - mini >= X){
if(sum <= R && sum >= L){
ans++;
}
}
return;
}
//i번째 문제를 포함한 것과 아닌 것
for(int i = idx; i<N; i++){
func(cnt + 1, i+1, max(level[i], maxi), min(level[i], mini), sum + level[i]);
func(cnt + 1, i+1, maxi, mini, sum);
}
}
int main(){
cin >> N >> L >> R >> X;
for(int i = 0; i<N; i++){
int lev;
cin >> lev;
level.push_back(lev);
}
func(0,0,0,123456789,0);
cout << ans << '\n';
return 0;
}
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 5427번, 불 C++ [CPP] ★★★★★★ (0) | 2022.08.25 |
---|---|
백준, BOJ, 20002번, 캠프 준비 C++ [CPP] ★★★★★ (0) | 2022.08.25 |
백준, BOJ, 16922번, 로마 숫자 만들기 C++ [CPP] ★★★★ (1) | 2022.08.25 |
백준, BOJ, 17404번, RGB거리 2 C++ [CPP] ★★★ (0) | 2022.08.14 |
백준, BOJ, 1107번, 리모컨 C++ [CPP] ★★★★ (0) | 2022.08.07 |