leetcode 416. Partition Equal Subset Sum

原题地址

https://leetcode.com/problems/partition-equal-subset-sum/description/

题意

给一个非空数组,把数组划分成和相同的两部分

思路

对数组求和,若是奇数返回false,若是偶数自底向上建表
做的时候遇到的问题:一开始建表忘记先全都置成false了

代码

class Solution {
public:
    int Sum(vector<int> & nums){
        int result=0;
        for(int i =0;i<nums.size();i++){
            result+=nums[i];
        }
        return result;
    }
    
    bool canPartition(vector<int>& nums) {
        int sum = Sum(nums);
        if(sum%2!=0){
            return false;
        }
        int target = sum/2;
        int n = nums.size();
        bool dp[target+1][n+1];
        memset(dp,false,sizeof(bool)*(target+1)*(n+1));
        for(int i =0;i<=n;i++){
            dp[0][i]=true;
        }
        for(int i =1;i<=target;i++){
            dp[i][0]=false;
        }
        for(int i =1;i<=target;i++){
            for(int j =1;j<=n;j++){
                if(i>=nums[j-1]){
                    dp[i][j]= dp[i-nums[j-1]][j-1];
                }
                if(dp[i][j]){
                    for(int k =j+1;k<=n;k++){
                        dp[i][k]=true;
                    }
                    break;
                }
                
            }
        }
        return dp[target][n]; 
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,951评论 2 36
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,534评论 5 28
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 3,517评论 0 6