C语言 | Leetcode C语言题解之第416题分割等和子集

题目:

题解:

cpp 复制代码
bool canPartition(int* nums, int numsSize) {
    if (numsSize < 2) {
        return false;
    }
    int sum = 0, maxNum = 0;
    for (int i = 0; i < numsSize; ++i) {
        sum += nums[i];
        maxNum = fmax(maxNum, nums[i]);
    }
    if (sum & 1) {
        return false;
    }
    int target = sum / 2;
    if (maxNum > target) {
        return false;
    }
    int dp[target + 1];
    memset(dp, 0, sizeof(dp));
    dp[0] = true;
    for (int i = 0; i < numsSize; i++) {
        int num = nums[i];
        for (int j = target; j >= num; --j) {
            dp[j] |= dp[j - num];
        }
    }
    return dp[target];
}
相关推荐
散峰而望2 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
Kuo-Teng2 小时前
LeetCode 160: Intersection of Two Linked Lists
java·算法·leetcode·职场和发展
是苏浙5 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
橘颂TA5 小时前
【剑斩OFFER】算法的暴力美学——点名
数据结构·算法·leetcode·c/c++
71-37 小时前
C语言练习题——判断水仙花数(0-100000)
c语言·笔记·学习
jzhwolp8 小时前
从基本链表到侵入式链表,体会内核设计思路
c语言·后端·设计模式
愚润求学8 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
biter down9 小时前
c语言18:结构体位段联合体
c语言·开发语言
·白小白10 小时前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode
程序员buddha10 小时前
C语言操作符详解
java·c语言·算法