满足 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告