题解 | #分割等和子集#

分割等和子集

https://www.nowcoder.com/practice/65ade309fa4d4067a9add749721bfdc0

如果能分成相等的两份的话,那么sum一定是偶数

1.sum是奇数的话 就false

2.如果是偶数 就变成了0-1背包问题 求数组和是否有和为sum / 2的子数组 有就是true

3.没有就false

#include <algorithm>
#include <iostream>
using namespace std;

// 数组元素加和 100 * 500 = 50000 sum / 2是25000 所以要开大于25000
const int N = 25000;
int f[N], a[N], sum;

int main() {
    int n;
    cin >> n;

    for(int i = 1; i <= n; i ++){
        cin >> a[i];
        sum += a[i];
    }

    if(sum % 2 != 0) cout << "false" << endl;
    else{
        f[0] = 1;
        for(int i = 1; i <= n; i ++)
            for(int j = sum / 2; j >= a[i]; j --){
                f[j] = f[j] || f[j - a[i]];
            }
        if(f[sum / 2]) cout << "true" << endl;
        else cout << "false"<< endl;
    }

}

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务