【我们一起60天准备考研算法面试(大全)-第三十三天 33/60】【计算几何】

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
60天后我们就可以学完81道题,相信60天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:878080619

第三十三天【考研408-数据结构(笔试)】

  • 二十八、计算几何
    • 1. 球的计算
    • 2. 点的距离
        • 重新定义类的相减
    • 3. 直角三角形

二十八、计算几何

1. 球的计算

【我们一起60天准备考研算法面试(大全)-第三十三天 33/60】【计算几何】_第1张图片

#include 
#include 
#include 
#include 

using namespace std;

const double PI = acos(-1);

int main()
{
    int T;
    cin >> T;
    while (T -- )
    {
        double x0, y0, z0, x1, y1, z1;
        cin >> x0 >> y0 >> z0 >> x1 >> y1 >> z1;

        double dx = x0 - x1;
        double dy = y0 - y1;
        double dz = z0 - z1;

        double r = sqrt(dx * dx + dy * dy + dz * dz);
        double v = 4.0 / 3 * PI * r * r * r;

        printf("%.2lf %.2lf\n", r, v);
    }
    return 0;
}

2. 点的距离

【我们一起60天准备考研算法面试(大全)-第三十三天 33/60】【计算几何】_第2张图片

重新定义类的相减

#include 
#include 
#include 
#include 

using namespace std;

class CPoint
{
public:
    double x, y;

    CPoint(){}
    CPoint(double _x, double _y): x(_x), y(_y) {}

    double operator- (const CPoint& t) const
    {
        double dx = x - t.x;
        double dy = y - t.y;
        return sqrt(dx * dx + dy * dy);
    }
};

int main()
{
    int T;
    cin >> T;

    while (T -- )
    {
        CPoint a, b;
        cin >> a.x >> a.y >> b.x >> b.y;
        printf("%.2lf\n", a - b);
    }

    return 0;
}

3. 直角三角形

【我们一起60天准备考研算法面试(大全)-第三十三天 33/60】【计算几何】_第3张图片

#include 
#include 
#include 
#include 

using namespace std;

struct CPoint
{
    double x, y;

    double operator- (const CPoint& t) const
    {
        double dx = x - t.x;
        double dy = y - t.y;
        return sqrt(dx * dx + dy * dy);
    }
};

struct CTriangle
{
    CPoint a, b, c;

    bool check()
    {
        double d[3] = {a - b, b - c, a - c};
        sort(d, d + 3);
        return fabs(d[0] * d[0] + d[1] * d[1] - d[2] * d[2]) < 1e-8;
    }

    double get_len()
    {
        return (a - b) + (b - c) + (a - c);
    }
};

int main()
{
    int T;
    cin >> T;
    while (T -- )
    {
        CTriangle t;
        cin >> t.a.x >> t.a.y >> t.b.x >> t.b.y >> t.c.x >> t.c.y;
        if (t.check()) puts("Yes");
        else puts("No");
        printf("%.2lf\n", t.get_len());
    }

    return 0;
}

你可能感兴趣的:(考研,算法,面试)