Algorithm参数记录

Posted SHARE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Algorithm参数记录相关的知识,希望对你有一定的参考价值。

一、vector<Point2f>

vector是一个存储二维点坐标的容器,其中每个元素都是一个Point2f类型的对象。在OpenCV中,Point2f表示一个由两个单精度浮点数构成的二维点坐标。

你可以使用vector来存储一些二维坐标信息,比如图像中的关键点或轮廓点等。具体用法可以参考下面的示例:

#include <opencv2/core.hpp>
#include <vector>

using namespace cv;
using namespace std;

int main()

    vector<Point2f> pointList;
    // 添加几个二维点到容器中
    pointList.push_back(Point2f(10, 20));
    pointList.push_back(Point2f(30, 40));
    pointList.push_back(Point2f(50, 60));
    // 遍历容器中的所有点
    for (int i = 0; i < pointList.size(); i++)
    
        // 输出每个点的坐标值
        Point2f pt = pointList[i];
        cout << "Point " << i + 1 << ": (" << pt.x << ", " << pt.y << ")" << endl;
    
    return 0;

在上述示例中,定义了一个存储二维点坐标的vector对象pointList,并向其中添加了三个二维点坐标。然后通过遍历容器中的每个元素,输出每个点的坐标值。

二、Rect2i

可以通过以下示例代码来创建和操作一个Rect2i对象:

#include <opencv2/core.hpp>
#include <iostream>

int main()

    cv::Rect2i rect(10, 20, 100, 50);    // 创建一个矩形,左上角坐标为(10, 20),宽为100,高为50
    std::cout << "rect: (" << rect.x << ", " << rect.y << ", " << rect.width << ", " << rect.height << ")" << std::endl;

    cv::Point2i pt = rect.tl();     // 获取矩形左上角点
    std::cout << "top left: (" << pt.x << ", " << pt.y << ")" << std::endl;

    return 0;

在上述示例中,定义了一个Rect2i类对象rect,表示一个左上角坐标为(10, 20),宽为100,高为50的矩形,并获取了矩形左上角点的坐标并输出。

[Data Structure & Algorithm] 二叉排序树

二叉排序树 BST

  • 性质
    • 若左子树非空,则左子树上所有记录的值<(=)根记录的值
    • 若右子树非空,则右子树上所有记录的值>(=)根记录的值
    • 左右子树本身又是一颗二叉排序树
    • 按中序遍历,可以得到一个递增有序序列
  • 空树也是二叉排序树
    • 即 构造二叉排序树 = 二叉排序树的插入操作
  • 存储 - 一般用二叉链表

二叉排序树的插入

  • 基本思路
    1.如果二叉树为空,把要插入的关键字作为根结点
    2.如果二叉树不为空,将要插入的关键字和根结点比较,大于根结点的插入到右子树,否则插入到左子树

二叉排序树的查找

  • 基本思路
    1.将要查找的关键字和根结点比较
    2.1如果=根结点,直接返回
    2.2如果>根结点,到右子树中查找
    2.3如果<根结点,到左子树中查找
    3.重复1,2,直到找到相等的值或查询到空结点
  • 平均查找长度 ABL
    • 含有n个结点的二叉排序树的ABL不唯一,取决于树的形态
      • 最慢 - (n+1)/2
        • 构造时插入顺序表 - 与顺序查找相同
      • 最快 - log2n
        • 与折半查找的判定树的形态相同

二叉排序树的删除

  • 基本思路
    1.查找要删除的关键字,令p指向该关键字,f指向该关键字的父结点
    2.1 如果p为叶子结点,直接删除
    2.2 如果
    p只存在一个子树,将p的子树直接和f相连
    2.3 如果p左右子树都存在,
    方法一 - 将
    p的左子树s(中序序列中的直接前驱)直接和f相连,再把p的右子树作为s的右子树
    方法二 - 将p的左(或右)子树s(中序序列中的直接前驱(或后继))与p交换位置,再删除p,此时*p只会有左(或右)子树,或者无子树,可以参考2.2













以上是关于Algorithm参数记录的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 1472. 设计浏览器历史记录

LeetCode Algorithm 1472. 设计浏览器历史记录

[Data Structure & Algorithm] 二叉排序树

c++的algorithm库常用函数

Python使用灰狼算法(Grey Wolf Optimization (GWO) Algorithm)构建优化器获取机器学习模型最优超参数组合拟合最佳模型实战+代码

FreeCodeCamp---advanced Algorithm Scripting解法