Cho hàm F(n) = P - 0.006*n, danh sách số nguyên và số A. Tìm số trong danh sách使F(n)最接近A。例如P=12,A=5,列表{1000,2000}→1000。
遍历列表,计算F(n),比较|F(n)-A|,取最小值对应的数。
示例
#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