当前位置: 首页 > news >正文

Leetcode Hot100 第30题 416.分割等和子集

在这里插入图片描述

class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum=0;
        for(int num:nums){
            sum+=num;
        }
        if(sum%2==1) return false;
        int bag_size = sum/2;
        // return dfs(nums,nums.size()-1,bag_size);//递归做法
        vector<vector<bool>> dp(nums.size()+1,vector<bool>(bag_size+1));
        dp[0][0]=true;
        for(int i=1;i<=nums.size();i++){
            for(int j=0;j<=bag_size;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()][bag_size];
    }

    bool dfs(vector<int>& nums, int i, int target){
        if(i<0) return target==0? true: false;
        if(target==0) return true;
        if(target<0) return false;
        return dfs(nums,i-1,target-nums[i])||dfs(nums,i-1,target);
    }
};

相关文章:

  • CTM工具箱--系统美化工具箱
  • Leetcode100-春招-矩阵题类
  • 图论入门算法:拓扑排序(C++)
  • Copilot:Excel中的Python高级分析来了
  • C#控制台大小Console.SetWindowSize函数失效解决
  • AtCoder Beginner Contest 393(ABCDEF)
  • 苹果CMS站群插件的自动生成功能:提升网站流量的秘诀
  • DeepSeek R1 32B 本地部署实战
  • 解决“IndentationError: unexpected indent”错误
  • 【强化学习的数学原理】第07课-时序差分方法-笔记
  • 【Linux内核】进程管理(上)
  • DOS命令 setx 用法
  • MyBatis进阶
  • Spring的BeanFactory和FactoryBean有 什么不同
  • 基于矢量轨道角动量波的透射超表面设计
  • 基于deepseek api和openweather 天气API实现Function Calling技术讲解
  • pandas(11 分类数据和数据可视化)
  • 腿足机器人之八- 腿足机器人动力学
  • linux--关于linux文件IO(2) open、read、lseek、stat
  • matlab功率谱反演法
  • 俄媒:俄乌伊斯坦布尔谈判将于北京时间今天17时30分开始
  • 媒体:“重病老人银行取款身亡”涉事家属称已和解,银行将支付十万
  • 网易一季度净利增长三成,丁磊:高度重视海外游戏市场
  • 坚持吃素,是不是就不会得高血脂了?
  • 男子不满和睦家医院手术效果还遇到了“冒牌医生”?院方回应
  • 中国至越南河内国际道路运输线路正式开通