题解 | #数组分组#

数组分组

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两下就写完了

全部评论

相关推荐

07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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