Combination Sum IV
早上起來看到朋友微信說出新題了,于是打開leetcode 看了一下,原來又是Combination Sum。 打開之后果斷用了之前三個Combination Sum 用到的 Backtracking, then submit, TIME LIMIT EXCEEDED, XD. 看了下tags,原來是用DP,于是寫了個DP的sulotion
tags
狀態(tài)轉(zhuǎn)移方程: combinationSum4(x): f(x)
f(target) = f(target - nums[0]) + f(target - nums[1]) + ... + f(target - nums.back())
附上之前三個combinationSum的題,沒有做前三個的可以先做一下前三個
Combination Sum
Combination Sum II
Combination Sum III
int combinationSum4(vector<int>& nums, int target) {
vector<int> res(target + 1, 0);
res[0] = 1;
for (int i = 1; i <= target; i++)
for (int n: nums)
if (i >= n)
res[i] += res[i - n];
return res.back();
}