我需要获得两个参数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。
答案 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;
}