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]);
    }
};
相关推荐
Rui_Freely几秒前
Vins-Fusion之 SFM 滑窗内相机位姿及特征点3D估计(十三)
人工智能·算法·计算机视觉
李泽辉_1 分钟前
深度学习算法学习(六):深度学习-处理文本:神经网络处理文本、Embedding层
深度学习·学习·算法
Codeking__14 分钟前
Redis的value类型及编码方式介绍——hash
redis·算法·哈希算法
u01040583616 分钟前
企业微信通讯录同步服务的增量更新与冲突解决算法
算法·企业微信
码农水水19 分钟前
阿里Java面试被问:RocketMQ的消息轨迹追踪实现
java·开发语言·windows·算法·面试·rocketmq·java-rocketmq
智驱力人工智能22 分钟前
矿场轨道异物AI监测系统 构建矿山运输安全的智能感知防线 轨道异物检测 基于YOLO的轨道异物识别算法 地铁隧道轨道异物实时预警技术
人工智能·opencv·算法·安全·yolo·边缘计算
橘颂TA30 分钟前
【剑斩OFFER】算法的暴力美学——leetcode 429 题:N 叉树的层序遍历
算法
"YOUDIG"31 分钟前
信稿笺纸设计工具:传统排版美学与数字化设计的高效融合
科技·考研·算法·面试·职场和发展·高考
Allen_LVyingbo31 分钟前
面向“病历生成 + CDI/ICD”多智能体系统的选型策略与落地实践(二)
人工智能·算法·系统架构·知识图谱·健康医疗
程序员-King.32 分钟前
day126—二分查找—寻找旋转排序数组中的最小值(LeetCode-153)
算法·leetcode·二分查找