滿足 C++ 中直線方程的有序點對數


需要滿足的直線方程為 y = mx + c。給定陣列 m 和 c,我們需要求出滿足直線方程的有序點對個數。我們來看一個例子。

輸入

arr = [1, 2, 3]
m = 1
c = 1

輸出

2

滿足直線方程的點對為

2 1
3 2

演算法

  • 初始化陣列 m 和 c。
  • 編寫兩個迴圈以獲取陣列中的所有點對。
    • 檢查點對是否滿足直線方程。
    • 我們可以透過將數值代入直線方程來檢查方程是否得到滿足。
    • 如果點對滿足直線方程,則增加計數。
  • 返回計數。

實現

以下是以上演算法在 C++ 中的實現

#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;
}

輸出

如果你執行以上程式碼,你將得到以下結果。

9

更新於:2021 年 10 月 26 日

130 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.