美文网首页
阿里 数组四等分问题

阿里 数组四等分问题

作者: yangqi916 | 来源:发表于2017-03-04 15:50 被阅读0次

    数组四等分问题

    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;
    }
    

    相关文章

      网友评论

          本文标题:阿里 数组四等分问题

          本文链接:https://www.haomeiwen.com/subject/ukkjgttx.html