两点间距离

本文介绍了一种使用C++实现的两点间距离计算方法。通过定义CPoint类及三种不同的距离计算函数(distance1, distance2, distance3),演示了如何计算平面上两点之间的距离。这些方法适用于需要进行几何计算的场景。
/* 
*Copyright (c) 2016,烟台大学计算机学院 
*All rights reserved. 
*文件名称:main.cpp 
*作    者:郭辉 
*完成时间:2016年4月17日 
*版 本 号:v1.0 
* 
*问题描述:两点间距离。 
*输入描述:无。 
*程序输出:距离。 
*/  
<pre name="code" class="cpp"><pre name="code" class="cpp">#include <iostream>
#include<math.h>
using namespace std;
class CPoint
{
private:
    double x;
    double y;
public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy) {}
    double distance1(CPoint &);
    friend double distance2(CPoint &, CPoint &) ;
    double getX()
    {
        return x;
    }
    double getY()
    {
        return y;
    }
};
double distance2(CPoint &p1, CPoint &p2);
double CPoint::distance1(CPoint &p)
{
    double dx,dy;
    dx=x-p.x;
    dy=y-p.y;
    return sqrt(dx*dx+dy*dy);

}
double distance2(CPoint &p1, CPoint &p2)
{
    double dx,dy;
    dx=p1.x-p2.x;
    dy=p1.y-p2.y;
    return sqrt(dx*dx+dy*dy);
}
double distance3(CPoint &p1, CPoint &p2)
{
    double dx,dy;
    dx=p1.getX()-p2.getX();
    dy=p1.getY()-p2.getY();
    return sqrt(dx*dx+dy*dy);
}
int main()
{
    CPoint p1(10,13), p2(-5,6);
    cout<<"1. "<<p1.distance1(p2)<<endl;
    cout<<"2. "<<distance2(p1,p2)<<endl;
    cout<<"3. "<<distance3(p1,p2)<<endl;
    return 0;
}







下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值