查找函数的值最接近于 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
广告