用双指针的做法也是全WA,求问这种思路错在哪
查看原帖
用双指针的做法也是全WA,求问这种思路错在哪
249527
BjtuMice楼主2023/4/10 20:34

主要的思路是用双指针得到最接近的两个和

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

int f(vector<int> &nums)
{
    sort(nums.begin(), nums.end());
    int i = 0, j = nums.size() - 1;
    int sum1 = 0, sum2 = 0;
    while (i <= j)
    {
        if (sum1 <= sum2)
        {
            sum1 += nums[i];
            i++;
        }
        else
        {
            sum2 += nums[j];
            j--;
        }
    }
    if (sum1 >= sum2)
        return sum1;
    else
        return sum2;
}

int main()
{
    int sum = 0;
    int n1, n2, n3, n4;
    cin >> n1 >> n2 >> n3 >> n4;
    vector<int> s1(n1), s2(n2), s3(n3), s4(n4);
    for (int i = 0; i < n1; i++)
        cin >> s1[i];
    for (int i = 0; i < n2; i++)
        cin >> s2[i];
    for (int i = 0; i < n3; i++)
        cin >> s3[i];
    for (int i = 0; i < n4; i++)
        cin >> s4[i];
    
    sum += f(s1);
    sum += f(s2);
    sum += f(s3);
    sum += f(s4);
    cout << sum << endl;

    return 0;
}
2023/4/10 20:34
加载中...