-1

我需要获取两个参数 a 和 b 的值,使得总和尽可能接近但小于 10^5。

我已经编写了这样的代码,但似乎无法为 a 和 b 获得正确的代码。

代码:

vector<int> PointValue(vector<int> &bins)
{
    double sum = 0;
    vector<int> ValuesAnB;
    for(int a = 740; a < 750;a++)
    {
        for(int b = 130; b < 140; b++)
        {
            sum = 0;
            for(int x = 0; x < bins.size(); x++)
            {
                sum += pow(Exp(a,b,x),2.0);
                if(sum > 1e5)
                    break;
            }
        }
    }
    return ValuesAnB;
}

而不是 if(sum > 1e5) break,我需要另一个语句来查找 a 和 b 的值,使得总和尽可能接近 10^5 但高于 10^5。在获得 a 和 b 的正确值时需要一些指导。一旦我得到 a 和 b 的值,我就可以将它推入 ValuesAnB。

4

1 回答 1

1

我无法测试它找不到 Exp 并且没有 bin 的值。但我认为这段代码会通过。

vector<int> PointValue(vector<int> &bins)
{
    double sum = 0, result = -1;
    int finalA, finalB;
    vector<int> ValuesAnB;
    for(int a = 740; a < 750;a++)
    {
        for(int b = 130; b < 140; b++)
        {
            sum = 0;
            for(int x = 0; x < bins.size(); x++)
            {
                sum += pow(Exp(a,b,bins[x]),2.0);

                if(sum >= 1e5)
                    break;

                if (result == -1 || 1e5-sum < 1e5-result)
                {
                   result = sum;
                   finalA = a;
                   finalB = b;
                }
            }
        }
    }

    if (result!=-1) // if bins is empty there will be no results
    {
        ValuesAnB.push_back(finalA);
        ValuesAnB.push_back(finalB);
    }
    return ValuesAnB;
}
于 2013-09-14T11:15:34.957 回答