题解 | #数组分组#

数组分组

https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86

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

bool dfs(int i, vector<int>& arr, int sum) {
    if (i == arr.size())
        return sum == 0;
    else {
        return dfs(i + 1, arr, sum + arr[i]) || dfs(i + 1, arr, sum - arr[i]);
    }
}

int main() {
    int n ;
    cin >> n;
    vector<int> res;
    int sum3 = 0;
    int sum5 = 0;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        if (x % 5 == 0) //先求一个组的和
            sum5 += x;
        else if (x % 3 == 0) //再求另一个组的和
            sum3 += x;
        else {
            res.push_back(x); //剩余的加入数组并求和
        }
    }

    if (dfs(0, res, sum3 - sum5))
        cout << "true" << endl;
    else
        cout << "false" << endl;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
真烦好烦真烦:感觉不太对劲,这种主动加微信的一般都是坑,要小心辨别
点赞 评论 收藏
分享
04-10 08:14
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务