题解 | #数组分组#

数组分组

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

#include <bits/stdc++.h>
using namespace std;

bool dfs(vector<int>& sel, int target, int k){
    if(k>=sel.size()&&target!=0) return false;
    if(k>=sel.size()&&target==0) return true;
    return dfs(sel, target-sel[k], k+1)||dfs(sel, target, k+1);
}

int main() {
    int n;
    while (cin >> n) {
        vector<int> arr(n);
        vector<int> sel;
        int left = 0, total = 0;
        for(int i=0;i<n;i++){
            cin>>arr[i];
            if(arr[i]%5==0) left+=arr[i];
            total+=arr[i];
            if(arr[i]%5!=0&&arr[i]%3!=0) sel.push_back(arr[i]);
        }
        if(total&1){
            cout<<"false";
            break;
        }
        int target = total/2-left;
        bool ret = dfs(sel, target, 0);
        cout<<(ret?"true":"false");
    }
}

转换问题,最后也不要用DP写了,DFS两下就写完了

全部评论

相关推荐

09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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