题解 | #数组分组#

数组分组

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

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

int vecSum(vector<int> &n)
{
    int result = 0;
    for(auto &i:n)
    {
        result+=i;
    }
    return result;
}

bool findResult(vector<int> &oset,vector<int> & vec5,vector<int> &vec3,int i)
{
    if(i==oset.size())
    {
        if(vecSum(vec3)==vecSum(vec5))
            return true;
        return false;
    }
    vec3.push_back(oset[i]);
    bool flag = findResult(oset, vec5, vec3, i+1);
    vec3.pop_back();

    vec5.push_back(oset[i]);
    bool flag1 = findResult(oset, vec5, vec3, i+1);
    vec5.pop_back();
    if(flag||flag1)
        return true;
    return false;
}

bool ifDivideTwo(vector<int> &r)
{
    vector<int> vec5;
    vector<int> vec3;
    vector<int> oset;
    for(auto &i:r)
    {
        if(i%5==0)
            vec5.push_back(i);
        else if(i%3==0)
            vec3.push_back(i);
        else
            oset.push_back(i);
    }
    int index = 0;
    int i = 0;
    return findResult(oset,vec5,vec3,i);
}


int main() {
    int n;
    cin>>n;
    vector<int> r;
    for(int i = 0;i!=n;++i)
    {
        int t;
        cin>>t;
        r.push_back(t);
    }
    if(ifDivideTwo(r))
        cout<<"true";
    else
        cout<<"false";
}
// 64 位输出请用 printf("%lld")

回溯法,分为两种情况,该值分配给3的数组,或者5的数组

全部评论

相关推荐

kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务