problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
leetcode::partition_equal_subset_sum::Solution类 参考

#include <leetcode.h>

静态 Public 成员函数

static bool canPartition (vector< int > &nums)
 

详细描述

在文件 leetcode.h3136 行定义.

成员函数说明

◆ canPartition()

bool leetcode::partition_equal_subset_sum::Solution::canPartition ( vector< int > &  nums)
static

在文件 leetcode.cpp8909 行定义.

8909 {
8910 const int n = nums.size();
8911 if(n < 2) {
8912 return false;
8913 }
8914 const int sum = accumulate(nums.begin(), nums.end(), 0);
8915 const int maxNum = *max_element(nums.begin(), nums.end());
8916 if(sum & 1) {
8917 return false;
8918 }
8919 const int target = sum / 2;
8920 if(maxNum > target) {
8921 return false;
8922 }
8923 vector dp(n, vector(target + 1, 0));
8924 for(int i = 0; i < n; i++) {
8925 dp[i][0] = true;
8926 }
8927 dp[0][nums[0]] = true;
8928 for(int i = 1; i < n; i++) {
8929 const int num = nums[i];
8930 for(int j = 1; j <= target; j++) {
8931 if(j >= num) {
8932 dp[i][j] = dp[i - 1][j] | dp[i - 1][j - num];
8933 } else {
8934 dp[i][j] = dp[i - 1][j];
8935 }
8936 }
8937 }
8938 return dp[n - 1][target];
8939 }

被这些函数引用 leetcode::partition_equal_subset_sum::TEST().


该类的文档由以下文件生成: