Mini
[알고리즘] 416. Partition Equal Subset Sum c++ 리트코드 // 완탐, dp 본문
* 완탐
-내생각 : 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' 카테고리의 다른 글
[틀림] 백준 1513 경로찾기 // 4차원 dp, 경로찾기 dp , 경우의수 dp (0) | 2025.03.18 |
---|---|
백준 4781 사탕가게 // dp, 갯수무한인경우는 dfs내 for문, 소수처리방법 (0) | 2025.03.18 |
[알고리즘] 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 |