获得参数使得总和接近10 ^ 5

时间:2013-09-14 10:37:18

标签: c++ vector

我需要获得两个参数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)中断,我需要另一个语句来查找a和b的值,使得总和尽可能接近10 ^ 5但高于10 ^ 5。需要一些指导来获得a和b的正确值。获得a和b的值后,我可以将其推入ValuesAnB。

1 个答案:

答案 0 :(得分: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;
}