首頁 > 後端開發 > C++ > 主體

在C++中,計算兩點之間的整數點數

WBOY
發布: 2023-09-02 21:57:07
轉載
1022 人瀏覽過

在C++中,計算兩點之間的整數點數

在本教程中,我們將編寫一個程序,用於找到給定兩個點之間的整數點的數量。

兩個給定點之間的點的數量將是gcd(abs(x2), abs(y1-y2)) - 1。

如果連接線與x軸平行,則整數點的數量將是abs(y1 - y2) - 1。

如果連接線與y軸平行,則整數點的數量將是abs(x1 - x2) - 1。

如果兩個點的x座標相等,則它們與x軸平行。如果兩點的y座標相等,則它們與y軸平行。

讓我們來看一個例子。

輸入

pointOne = [1, 5]
pointTwo = [1, 3]
登入後複製

輸出

#
1
登入後複製

演算法

    ##初始化兩個點。
  • 檢查它們是否與x軸平行。
  • 如果它們與x軸平行,則使用公式 abs(y1 - y2) - 1。
  • 檢查它們是否與y軸平行。
  • 如果它們與y軸平行,則使用公式 abs(x1 - x2) - 1。
  • 如果它們不與任何軸平行,則使用公式 gcd(abs(x1-x2), abs(y1- y2)) - 1。
  • 計算結果並列印。
實作

以下是C 中上述演算法的實作

#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
   if (b == 0) {
      return a;
   }
   return gcd(b, a % b);
}
int getCount(int pointOne[], int pointTwo[]) {
   if (pointOne[0] == pointTwo[0]) {
      return abs(pointOne[1] - pointTwo[1]) - 1;
   }
   if (pointOne[1] == pointTwo[1]) {
      return abs(pointOne[0] - pointTwo[0]) - 1;
   }
   return gcd(abs(pointOne[0] - pointTwo[0]), abs(pointOne[1] - pointTwo[1])) - 1;
}
int main() {
   int pointOne[] = {1, 3}, pointTwo[] = {10, 12};
   cout << getCount(pointOne, pointTwo) << endl;
   return 0;
}
登入後複製

輸出

如果您執行上述程式碼,您將獲得以下結果。

8
登入後複製

以上是在C++中,計算兩點之間的整數點數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!