查找函数的值最接近于 C++ 中的 A 的给定列表中的数字


假设我们有一个函数 F(n) 使得 F(n) = P – (0.006*n),其中 P 也已给出。给定一个整数列表和一个数字 A。任务是查找给定列表中的数字,使其函数值最接近 A。因此,如果 P = 12且 A = 5,则列表将为 {1000, 2000} 所以输出将为 1000。因此,如果 P = 12 且 A = 5,则对于 1000,F(1000) = 12 – (0.006 * 1000) = 6 而对于 2000,F(2000) = 12 – (0.006 * 2000) = 0,因为最接近 5 的值为 6,所以取 6。

遍历列表中的每个值,并找出每个值的 F(n)。现在比较 F(n) 的每个值与 A 的绝对差以及 n 的值,对于绝对差最小的 n,将是答案。

示例

 在线演示

#include<iostream>
#include<cmath>
using namespace std;
int nearestValue(int P, int A, int N, int arr[]) {
   int ans = -1;
   float temp = (float)INFINITY;
   for (int i = 0; i < N; i++) {
      float term = P - arr[i] * 0.006;
      if (abs(term-A) < temp) {
         temp = abs(term - A);
         ans = i;
      }
   }  
   return arr[ans];
}
int main() {
   int P = 12, A = 5;
   int array[] = {1000, 2000, 1001};
   int N = sizeof(array)/sizeof(array[0]);
   cout << "Nearest value is: " << nearestValue(P, A, N, array) << endl;
}

输出

Nearest value is: 1001

更新日期:2019-12-18

101 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告