阿里 数组四等分问题

数组四等分问题

bool func(vector<int>& vec) {
    int m1 = 0;
    int m2 = 1;
    int m3 = 2;
    
    int sumA = 0;
    int sumB = 0;
    int sumC = 0;
    int sumD = 0;
    
    int length = (int)vec.size();
    for (int i = 3; i < length; i++)
        sumD += vec[i];
    
    while (true) {
        if(sumC < sumD) {
            sumC += vec[m3];
            sumD -= vec[m3 + 1];
            ++m3;
            if(m3 == length)
                break;
            else
                continue;
        }
        
        if(sumB < sumC) {
            sumB += vec[m2];
            sumC -= vec[m2 + 1];
            ++m2;
            if(m2 == m3)
                break;
            else
                continue;
        }
        
        if(sumA < sumB) {
            sumA += vec[m1];
            sumB -= vec[m1 + 1];
            ++m1;
            if(m1 == m2)
                break;
            else
                continue;
        }
        
        if(sumA == sumB &&
           sumB == sumC &&
           sumC == sumD)
            return true;
    }
    
    return false;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容