C++STL
文章平均质量分 59
C语言进阶学习
向晚大魔王Avvvvvva
华南农业大学软件工程学生
展开
-
算法套路学习笔记(第一章)
前言现在是2021-11-21,开始使用东哥的算法小抄进行算法的学习,这篇文章就算是我的读书笔记吧,侵权删。1.1 基础语法使用备份1.哈希表 unordered_map常用方法:①size_type count(const key_type& key);返回哈希表中key出现的次数,因为哈希表不会出现重复的键,所以该函数只可能返回0或者1可以用来判断键key是否存在于哈希表中②size_type erase(const key_type& key)通过key来清除哈希表中原创 2021-11-23 21:36:52 · 799 阅读 · 1 评论 -
平面最佳坐标点
题目描述竞赛题C 平面最佳坐标点Time Limit:3000MS Memory Limit:65535K题型: 编程题 语言: 无限制描述 在平面坐标上,给n个坐标点,现定义两个点(x1,y1)和(x2,y2)的“距离”为|x1-x2|3+|x1-x2|*|y1-y2|+|y1-y2|3 现要求编程找一个点,使得n个点到该点的距离累加和最小,精度去到小数点3位输入格式第一行一个数n(n<=1000),此后n行,每行两个浮点数为坐标点x y(0<=x,y<=1000原创 2021-09-22 22:33:38 · 172 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(11)深入理解直方图和滤波器
直方图概述直方图是变量分布的统计图表示,它让我们能够理解数据的密度估计和概率分布。直方图是通过整个变量值范围划分为小的值范围,然后计算每个间隔落入多少个值来创建的编码实现 //首先判断图像的类型 if (src.channels() == 1) {//灰度图像 // do something } else if (src.channels() == 3) {//BGR三通道图像 //1.将BGR三通道图像弄成vector std::vector <Mat> bgr;原创 2021-09-15 10:31:58 · 386 阅读 · 0 评论 -
图像分割算法(BFS)
题目描述描述给定一个n行m列的二值图像,0为背景,1为前景物,请计算该图像中有多少块区域块(由连接的1构成),并输出最大的区域块的像点数。同一个区域块中的点要么是连接的,要么是存在包围关系。判断两个区域是否连接采用四邻域判定,即一点仅与它的上下左右四个点相连;判断两个区域是否存在包含关系即一个区域被另一个区域完全包围,如下所示,中间的两个1被外面的16个1完全包围(中间的两个1不存在通往外界的四邻域通路)0000000000111110001000010010110100100001原创 2021-09-12 23:51:30 · 401 阅读 · 0 评论 -
Opencv4(C++)案例5:采取纯编码 不调用任何api的方式找十字中心点
需求分析原创 2021-09-12 23:42:18 · 861 阅读 · 0 评论 -
Opencv4(C++)实战案例4:数白块
需求分析读入一个视频流,对视频流中的白块进行计数.案例方法:实现运动目标检测(追踪)待选方法:①帧差法基本原理就是在图像序列相邻两帧或三帧间采用基于像素的时间差分通过闭值化来提取出图像中的运动区域。帧差法仅仅做运动检测。网上经常有人做个运动检测,再找个轮廓,拟合个椭圆就说跟踪了,并没有建立帧与帧之间目标联系的,没有判断目标产生和目标消失的都不能算是跟踪吧。首先,将相邻帧图像对应像素值相减得到差分图像,然后对差分图像二值化,在环境亮度变化不大的情况下,如果对应像素值变化小于事先确定的阈值时,可以认原创 2021-09-05 11:20:25 · 340 阅读 · 0 评论 -
Opencv4(C++)实战案例3:提取在复杂环境下的特定目标轮廓
问题引出要做的是,不要提取到树叶和树枝,只是把荔枝(果实)的轮廓提取出来思路1.首先将RGB图像转成HSV图像2.在HSV下,将色温为红色的标白,其他颜色的标黑.3.然后根据这个图,双重for循环,检测周围的点,如果是01分界就打点,否则继续遍历下一个点。转化为HSV图像并且完成标记#include <opencv2/opencv.hpp>#include <stdio.h>#include <cstring>using namespace std原创 2021-08-26 21:59:02 · 3344 阅读 · 0 评论 -
Opencv4(C++)实战案例1:将朦胧的图像变清晰(去雾)
本文的主要思想参考了以下文章,学习过程中对各个api进行了了解和分析。原文CV_Assert检查运行情况,如果出现错误,则显示错误信息。在括号内填入想要检测的信息然后错误则抛出一个异常,否则就返回true在这里就相当于我们做的一个image.empty()检测。src.convertTo(dst, type, scale, shift)注意也不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_1原创 2021-08-19 14:55:18 · 6244 阅读 · 1 评论 -
Opencv视觉处理(C++)语法学习(10)实践案例:实时人脸识别+美颜
该案例的思路:首先用老师提供的gitee仓库下载文件,因为有墙原本的脚本没办法用的。下载->models->facedector接着就是我们的demo演示了原创 2021-08-17 15:10:49 · 401 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(9)图像基础知识整理巩固
图像直方图void QuickDemo::histogram_demo(Mat& img){ //进行三通道的分离 std::vector<Mat> bgr_plane; split(img,bgr_plane); //定义预备用的参数 const int channel[1] = { 0 }; const int bins[1] = { 256 }; float Range[2] = { 0,255 }; const float* histRange = { Ran原创 2021-08-17 13:20:49 · 306 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(8)视频流读入与视频处理
读取视频流的方法void QuickDemo::video_demo(Mat &img){ // 读取视频需要调用api 产生一个对象,并调用对象中的方法 VideoCapture capture("E:/data/vtest.avi"); Mat frame; while (1) { capture.read(frame); flip(frame, frame, 1); if (frame.empty()) { break; } imshow("fram原创 2021-08-17 10:25:20 · 887 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(7)图像像素转化与图像几何变换
图像像素转化使用场景:将像素类型(数据类型)转化为同一类型,将图像的灰度值(0-255)转化为0-x之间进行一个归一化void QuickDemo::norm_demo(Mat& img){ cout << endl; Mat dst; img.convertTo(img, CV_32F);//将原图像转化为一个浮点数类型的图像 //std::cout << (img.type())<<'\n' << (dst.type()); //输原创 2021-08-16 16:11:07 · 651 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(6)鼠标操作与相应
认识调用鼠标操作的api及其参数设定首先说一下原理:首先是在opencv产生的窗口中设定一个监听事件,用来监听鼠标的操作,鼠标的操作将会被系统捕获,然后返回到opencv中的鼠标的响应函数中去,这个响应函数在定义之初就被绑定到鼠标操作的事件上去了,这样的一个流程下来就形成了用户鼠标操作,在opencv窗口中引起相应的变化的这么一个过程。1.调用鼠标操作的apisetMouseCallback("鼠标操作", on_draw, (void*)(&img));2.鼠标操作结束之后系统监听到的事原创 2021-08-16 00:19:37 · 1023 阅读 · 1 评论 -
Opencv视觉处理(C++)语法学习(5)几何图像绘制
基本几何图像的绘制四种基本图形的绘制void QuickDemo::draw_demo(Mat& img){ //绘制矩形 //1.定义一个矩形 Rect rect; rect.x = 200;//绘制的起始坐标 rect.y = 200;//绘制的起始坐标 //在计算机中,x和y的起点都是在左上角,窗口的左上角开始,向右则x增大,向下则y增大 rect.width = 200;//横 rect.height = 200;//纵 //2.调用api绘制矩形 rectangl原创 2021-08-15 17:36:44 · 302 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(4)通道的分离、合并与图像色彩转换
ss原创 2021-08-14 16:29:46 · 483 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(3)图像的算术与逻辑运算
通过设定Scalar算子的算术运算操作void QuickDemo::operator_demo(Mat& img){ //演示画布任意操作 Mat dst; dst = img + Scalar(50, 50, 50);//这样加法的操作之后会发现图片会亮一些 /* imshow("src", img); imshow("dst", dst); */ dst = img - Scalar(50, 50, 50);//这样减法的操作之后会发现图片会亮一些 //dst原创 2021-08-14 00:03:48 · 1526 阅读 · 2 评论 -
Opencv视觉处理(C++)语法学习(2)图像对象的创建及其参数说明
学习目的:1.了解如何操作Mat2.如何遍历Mat对象中包含的每一个元素3.如何创建一个空图或者Mat创建Mat对象的方法1.clone()函数调用src=img.clone();2.直接赋值法src=ming;3.拷贝API调用img.copyTo(dst);创建空白图像的方法 Mat CreateEmptyLikeSrc(Mat src) { Mat m1 = Mat::zeros(src.size(), src.type()); Mat m2 = Mat::ze原创 2021-08-13 18:05:45 · 678 阅读 · 0 评论 -
2021SCAU数据结构复习 实验5
题1:8610 顺序查找题目描述输入格式第一行:元素个数n第二行:依次输入n个元素的值第三行:输入要查找的关键字key的值输出格式输出分两种情形:1.如果key值存在,则输出其在表中的位置x(表位置从1开始),格式为The element position is x.2.如果key值不存在输出:“The element is not exist.”输入样例61 3 5 7 9 105输出样例The element position is 3.AC代码#include <原创 2021-06-15 22:34:10 · 531 阅读 · 2 评论 -
2021SCAU数据结构复习(实验1-实验3)
题1:8576 顺序线性表的基本操作题目描述Description 编写算法,创建初始化容量为LIST_INIT_SIZE的顺序表T,并实现插入、删除、遍历操作。本题目给出部分代码,请补全内容。#include<stdio.h>#include<malloc.h>#define OK 1#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ElemType inttyped原创 2021-06-02 22:52:59 · 4293 阅读 · 2 评论 -
18730 涂色问题(快速幂)
题目描述Description在某大学的农场里,n间牛舍住着n头奶牛。现在你需要为n间牛舍的外墙涂色,有m种可选颜色。我们已经知道当相邻两间牛舍颜色相同时,奶牛们会集体发疯。请问有多少种涂色方案会让奶牛们发疯,由于答案可能较大,输出对1000000007求余的结果。输入格式仅一行,两个整数n和m,代表牛舍数量和颜色数量。(1<=n<=1e12),(1<=m<=1e12)输出格式仅一样,一个整数代表答案。输入样例3 2输出样例6提示3牛舍2颜色方案有(1,1原创 2021-05-30 20:11:25 · 383 阅读 · 0 评论 -
最短路径问题
普里姆算法题目描述Description给定结点数为n,边数为m的带权无向连通图G,所有结点编号为1,2,3…n。求图G的最小生成树的边权和。输入格式第一行两个正整数n和m。n,m<=2000之后的m行,每行三个正整数a,b,w,描述一条连接结点a和b,边权为w的边。1=<a,b<=n,w<=10^18。注意可能存在重边和自环。输出格式一个整数表示图G的最小生成树的边权和(注意用长整型)。输入样例7 121 2 91 5 21 6 32 3 52 6原创 2021-05-28 16:46:36 · 600 阅读 · 0 评论 -
单调栈三题
题1:19016 柱状图中最大的矩形题目描述Description给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。输入格式第一行一个整数n代表柱子个数。1<=n<=1e5 第二行n个正整数,代表柱子的高度。输出格式输出最大面积。(注意此类题目的答案可能超出int范围)输入样例62 1 5 6 2 3输出样例10作者 30002692AC代码#include <iostrea原创 2021-05-26 23:48:45 · 150 阅读 · 0 评论 -
2021SCAU数据结构复习 实验四(二叉树专题)
题1:8606 二叉树的构建及遍历操作题目描述Description 构造二叉链表表示的二叉树:按先序次序输入二叉树中结点的值(一个字符),’#'字符表示空树,构造二叉链表表示的二叉树T;再输出三种遍历序列。本题只给出部分代码,请补全内容。#include “stdio.h”#include “malloc.h”#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OV原创 2021-05-26 19:51:07 · 1941 阅读 · 1 评论 -
2021计算智能期末复习
题1:18005 It is not ugly number题目描述18005 It is not ugly number时间限制:2000MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: G++;GCCDescriptionUgly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence1, 2, 3, 4, 5, 6, 8, 9, 10, 12, …shows t原创 2021-05-16 23:50:42 · 2310 阅读 · 3 评论 -
18440 走迷宫2 (DFS)
问题引出:输入一个数n,输出1~n的全排列,在运行时间十分有限的情况下(不能直接暴力枚举),该如何解决这个问题呢?假设现在有3个号码牌,要将其放入有序地三个盒子中,并且每个盒子有且只能放一个号码牌,问有几种放法?代码分解:1.往盒子中放入号码牌的操作:for(i=1;i<=n;i++){ a[step]=i;//将i号扑克牌放入第step个盒子中。}数组a是用来表示盒子的,step表示当前正处在第step个小盒子的前面,a[step]=i表示的就是把i号扑克牌放入到第step个原创 2020-12-19 14:17:24 · 801 阅读 · 1 评论 -
POJ 3278抓住那头牛
广度优先搜索例题农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:1、从X移动到X-1或X+1,每次移动花费一分钟2、从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?...原创 2021-04-27 19:29:17 · 157 阅读 · 0 评论 -
C语言课程设计(活动管理程序)
第一个问题:如何限制用户输入长度?原创 2021-04-17 23:31:33 · 1950 阅读 · 3 评论 -
分苹果问题
题目可以描述为,现在有M个苹果,有N个盘子,允许有的盘子是空的,请问会有几种分苹果的方法?本题的关键是:盘子可以是空的,可以是非空的,根据这一点我们可以知道,每一种方法的状态是,有空盘和没有空盘,那么在一种状态下,可以通过改变每个盘子中苹果的个数来改变每一种方法,来新得到一种方法,那么也就是说通过每一次的递归,由上次的全局状态进行微调,得到当前的局部状态,在下一次的递归中由当前的局部状态来得到新的局部状态,直到遇到递归边界,那么递归边界是什么呢?苹果都放完了,不可能还有别的局部状态的时候,那么这时候就是原创 2021-04-13 20:06:53 · 808 阅读 · 2 评论 -
走楼梯问题
题目描述为,现在有一个人,需要到达m阶的楼梯,这个人可以选择一次迈一步,或者一次迈两步,问:在到达目的地之前,会有几种方式到达目的地?(注意:比如要到达第4层,那么可以有1 1 2 或者2 1 1这些都可以看做是不一样的)题目很简单,需要做的是递归分治,每一次的前进都可以有两种选择,选择迈两步或者迈一步,递归边界是m为0或者是m<0,而且方法种数是根据迈一步和迈两步之和求出来的。#include <iostream>using namespace std;int Stairs(原创 2021-04-13 19:39:04 · 158 阅读 · 0 评论 -
N皇后问题
N皇后问题可以简述为,在N*N的棋盘上,有N个皇后,为了确保这些皇后不会互相攻击,需要这些皇后不在同一行,同一列,同一对角线上,请用递归的方法来解决问题。思路:考虑到每个皇后的摆放决定都是同一个规则,那么也就是说是把庞大的问题逐步缩小分治直到达到target。需要注解的是,由于皇后是逐行放置的,所以横向的就可以不用考虑,而竖向的和斜向的就需要考虑,这一点我们在设计判断语句的时候可以利用起来,那么对于行,我们只需要判断当前的列数与前面那一个的列数是不是一样的就可以了,但是对于对角线的,我们发现比较难判断,原创 2021-04-13 19:28:52 · 402 阅读 · 0 评论