문제에서는 두 정수의 절대 차이가 정확히 k인 경우가 없는 subset을 beautiful subset이라고 정의한다.
구하려는 값은 모든 non-empty subset 중에서 조건을 만족하는 beautiful subset의 총 개수이다.
제약사항
1 <= nums.length <= 20
class Solution {
public:
unordered_map<int,int> m;
int answer =0 ;
int visited[21] = {0, };
void dfs(int idx, int depth, vector<int>& nums, int k) {
if(depth > 0){
answer++;
}
for(int i = idx; i<nums.size(); i++){
if(m.find(nums[i] - k) != m.end()){
int value = m[nums[i]-k];
if(value != 0){
continue;
}
}
if(m.find(nums[i] + k) != m.end()){
int value = m[nums[i]+k];
if(value != 0){
continue;
}
}
if(!visited[i]){
visited[i] = 1;
m[nums[i]]++;
dfs(i + 1, depth+1, nums ,k);
m[nums[i]]--;
visited[i] = 0;
}
}
}
int beautifulSubsets(vector<int>& nums, int k) {
dfs(0,0,nums,k);
return answer;
}
};