在C++中确定一条线将通过的单位面积的平方数?
目标是确定一条线将通过给定两个端点(x1,y1)和(x2,y2)的方格数。
要找到我们的线通过的正方形数,我们需要找到:x点之间的差值(dx)=x2-x1,y点之间的差值(dy)=y2-y1,将dx和dy相加并减去他们的gcd(result)=dx+dy–gcd(dx,dy)。
unitSquares(intx1,inty1,intx2,inty2)函数采用四个值x1,y1和x2,y2。计算x2和x1之间的绝对差值以及y2和y1之间的绝对差值。从dx,dy的gcd中添加和减去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#include 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<<"线穿过 "< 输出结果 上面的代码将产生以下输出-
线穿过 9 squares