* 완탐
-내생각 : 200C1 + 200C2 + 200C3 + ,... + 200C 200 == 2^200 //빡세다..
-답 : 이진트리로 쉽게생각하면됨 // num[idx]를 sum1에 넣기 or sum2에 넣기 == 2^200
vector<int> nums;
class Solution {
public:
int go(int idx, int sum1, int sum2){
if(idx>=nums.size()){
return sum1==sum2;
}
return go(idx+1,sum1+nums[idx],sum2) || go(idx+1,sum1,sum2+nums[idx]);
}
bool canPartition(vector<int>& _nums) {
nums=_nums;
return go(0,0,0);
}
};
1
1 2
1 2 ..
1 2 .. ..에서
둘중에 한경우라도 true이면 true를 리턴하도록 코드를 짠부분을 기억하자.
2^200 -> 시간초과
* dp
'Algorithm > dp' 카테고리의 다른 글
[알고리즘] leetcode 790. 도미노와 트로미노 타일링 c++ // dp (0) | 2024.07.03 |
---|---|
[알고리즘] 리트코드 1696. 점프 게임 VI c++ // set, deque dp (0) | 2024.07.02 |
[알고리즘] 리트코드 45. 점프 게임 II c++ // dp, 그리디 bfs (0) | 2024.07.01 |
[알고리즘] 리트코드 최대하위배열 c++ // dp (0) | 2024.07.01 |
[알고리즘] 리트코드 고유경로 c++ // dp 모든유형 (0) | 2024.07.01 |