Leetcode Hot100 第25题 494.目标和---转背包问题

cpp 复制代码
class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        // p+s=sum
        // p-s=target
        // p = (sum+target)//2
        // 从背包(nums)里选出target为(sum+target)//2的方案数,从而转换成背包问题
        for(int num:nums){
            target+=num;
        }
        if(target%2 != 0) return 0;
        if(target<0) return 0;
        target = target/2;
        /*****递归解法*******/
        // return dfs(nums,nums.size()-1,target);
        /*****递归解法*******/

        /*****DP数组循环解法*******/
        vector<vector<int>> dp(nums.size()+1,vector<int>(target+1));
        dp[0][0] = 1;
        for(int i=1;i<=nums.size();i++){
            for(int j=0;j<=target;j++){
                if(j-nums[i-1] < 0) dp[i][j] = dp[i-1][j];
                else dp[i][j] = dp[i-1][j] + dp[i-1][j-nums[i-1]];
            }
        }
        return dp[nums.size()][target];
    }
    int dfs(vector<int>& nums, int i, int c){
        if(i < 0){
            if(c==0) return 1;
            else return 0;
        }
        if(c-nums[i] < 0) return dfs(nums,i-1,c);
        return dfs(nums,i-1,c) + dfs(nums,i-1,c-nums[i]);
    }
};
相关推荐
微尘hjx12 小时前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
小蒋观天下16 小时前
雷击与浪涌防护:前端SPD选型、接地网误区,接地不当反而引入干扰
深度学习·算法·机器学习
WBluuue18 小时前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
圣保罗的大教堂18 小时前
leetcode 3619. 总价值可以被 K 整除的岛屿数目 中等
leetcode
澳鹏Appen19 小时前
澳鹏重磅发布ExamOCRBench:面向端到端试卷判分的多任务基准
算法·benchmark·基准评测
benjormin19 小时前
Java数据结构 二叉搜索树
数据结构·算法
人工智能培训19 小时前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
地平线开发者20 小时前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证
pytorch·算法·自动驾驶
IT星宿20 小时前
github-gravity:用 Rapier2D 把 GitHub 贡献图做成 SVG 物理动画
算法·github