Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số cặp điểm có thứ tự thỏa phương trình đường thẳng C++

Phương trình đường thẳng y = mx + c. Cho mảng, m, c. Đếm số cặp điểm có thứ tự (arr[i], arr[j]) thỏa phương trình.

Ví dụ: arr=[1,2,3], m=1, c=1 → 2 cặp: (2,1) và (3,2) vì 1=1*2+1? Wait: y=mx+c. Với x=1, y=2: 2=1*1+1=2 ✓. x=2, y=3: 3=1*2+1=3 ✓.

Giải thuật

  • Hàm isSatisfyingLineEquation: nếu i==j trả về false; trả về arr[j] == m*arr[i] + c
  • Hai vòng lặp i, j từ 0 đến n-1
  • Nếu thỏa thì count++
  • Trả về count

Ví dụ minh họa

#include <bits/stdc++.h> 
using namespace std; 

bool isSatisfyingLineEquation(int arr[], int i, int j, int m, int c) { 
    if (i == j) return false; 
    return arr[j] == m * arr[i] + c; 
} 

int getOrderedPointsPairCount(int arr[], int n, int m, int c) { 
    int count = 0; 
    for (int i = 0; i < n; i++) { 
        for (int j = 0; j < n; j++) { 
            if (isSatisfyingLineEquation(arr, i, j, m, c)) { count++; } 
        } 
    } 
    return count; 
} 

int main() { 
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    int n = 10; 
    int m = 1, c = 1; 
    cout << getOrderedPointsPairCount(arr, n, m, c) << endl; 
    return 0; 
} 

Đầu ra

9