当前位置: 首页 > 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);
    }
};
http://www.dtcms.com/a/20593.html

相关文章:

  • 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功率谱反演法
  • B. Longest Divisors Interval
  • Linux 基于共享内存的循环队列实现
  • 深度学习02 神经网络实现手写数字案例
  • 成熟开发者需具备的能力
  • GDB 调试入门教程
  • Python中数学问题1--lcm、gcd
  • SpringBoot整合easy-es
  • AIP-145 范围
  • el与data的2种写法
  • 图像生成GAN和风格迁移