在 C++ 中如何確定一條直線穿過多少個單位面積的正方形?


目標是確定一條給定兩個端點 (x1,y1) 和 (x2,y2) 的直線將穿過多少個正方形。

為了找到我們的直線穿過多少個正方形,我們需要找到:x 座標的差 (dx) = x2-x1,y 座標的差 (dy) = y2-y1,將 dx 和 dy 相加並減去它們的 最大公約數 (result) = dx + dy – gcd(dx,dy)。

unitSquares(int x1, int y1, int x2, int y2) 函式接受四個值 x1、y1 和 x2、y2。計算 x2 和 x1 的絕對差以及 y2 和 y1 的絕對差。將 dx 和 dy 相加並減去 dx、dy 的最大公約數。結果儲存在 ans 中並返回給 main 進行列印。

int unitSquares(int x1, int y1, int x2, int y2){
   int dx = abs(x2 - x1);
   int dy = abs(y2 - y1);
   int ans = dx + dy - __gcd(dx, dy);
   return ans;
}

示例

讓我們看一下以下實現,以確定一條直線將穿過多少個單位面積的正方形。

 線上演示

#include<iostream>
#include <algorithm>
using namespace std;
int unitSquares(int x1, int y1, int x2, int y2){
   int dx = abs(x2 - x1);
   int dy = abs(y2 - y1);
   int ans = dx + dy - __gcd(dx, dy);
   return ans;
}
int main(){
   int x1 = 3, y1 = 3, x2 = 12, y2 = 6;
   cout<<"The line passes through "<<unitSquares(x1, y1, x2, y2)<<" squares ";
   return 0;
}

輸出

以上程式碼將產生以下輸出:

The line passes through 9 squares

更新於: 2021年1月16日

68 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.