
C++、算法与数据结构
文章平均质量分 54
C++、算法与数据结构基础
_MICHAEL_LIU_
这个作者很懒,什么都没留下…
展开
-
libigl 使用时常见错误与解决方法
libigl 使用时常见错误与解决方法一、 error C2440: ‘=’: cannot convert from ‘char [260]’ to ‘LPWSTR’,等类似错误解决方法:1、打开属性配置页2、配置属性 -> 高级 -> 字符集3、选择 使用多字节字符集二、error C4996: ‘fopen’ ,等类似错误解决方法:1、打开属性配置页2、配置属性 -> C/C++ -> 预处理器 -> 预处理器定义3、添加 _CRT_SECURE_N原创 2021-08-18 13:53:29 · 936 阅读 · 0 评论 -
检测是否为回文字符串 C++实现
检测是否为回文字符串 C++实现回文字符串,是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文字符串。检测原理:定义两个迭代器,一个指向字符串头部,一个是反向迭代器,指向反向头部,再逐字比较。源代码#include <iostream>#include <string>using namespace std;bool Test(const string &temp_st原创 2016-10-30 23:06:00 · 7211 阅读 · 0 评论 -
输出数组中第i大的数(非排序) C++实现
输出数组中第i大的数 C++实现注:需要C++11的支持。使用期望为线性时间的选择算法实现。此算法是以快速排序随机版为模型。源代码:#include <iostream>#include <vector>#include <random>#include <algorithm>using namespace std;vector<long long> Random() { static原创 2016-10-23 20:48:26 · 1112 阅读 · 0 评论 -
01背包问题与分数背包问题 C++实现
01背包问题与分数背包问题 C++实现贪心对动态规划两个背包问题都具有最优子结构性质。对01背包问题,考虑重量不超过WW而价值最高的了包装方案。如果我们将商品jj从此方案中删除,则剩余商品必须是重量不超过W−ωjW-\omega_j的价值最高档案。虽然两个问题类似,但我们用贪心策略可以求解分数背包问题,而不能求解01背包问题(需要用动态规划方法求解),我们首先计算每个商品的每磅价值vi/ωiv_i/原创 2016-11-12 23:15:38 · 2548 阅读 · 0 评论 -
动态规划之最优二叉搜索树的结构 C++实现
动态规划之最优二叉搜索树的结构 C++实现原理根据每个元素出现的频率,对应一个概率值,计算期整个二叉树的期望搜索代价,确定最优二叉树的结构。源代码#include <iostream>#include <utility>#include <vector>using namespace std;//Probability.vector<double> temp_dblP = { 0.0,0.15原创 2016-11-08 17:50:59 · 2660 阅读 · 0 评论 -
动态规划之最长公共子序列问题 C++实现
动态规划之最长公共子序列问题 C++实现原理在之前的文章当中,作者论述了设么事动态规划,这次,我们来看看,如何用动态规划解决最长公共子序列问题。这个问题经常运用在判断两种生物的相似度—-DNA比对上。对比俩串的方式有很多种,例如如果一个串是另一个的字串,那么可以说两个串是相似的:如果将一个串转换为另一个串的操作很少,那么也可以说这两个串是相似的。另一种衡量俩串S1,S2S_1,S_2的相似度方式为:原创 2016-11-08 12:12:53 · 4863 阅读 · 0 评论 -
哈夫曼编码与解码(贪心算法) C++实现
哈夫曼编码与解码(贪心算法) C++实现原理将原有的定长编码改为变长编码,字母次数出现多的使用小位数编码,字母次数出现少的使用多位数编码,总编码长度为: B(T)=∑c∈Cc.freq×dT(c)B(T)=\sum_{c\in C}c.freq\times d_{T}(c) 个二进制位。其中c.freqc.freq表示cc在文本中出现的频率,dT(c) d_{T}(c)表示字符cc的码字的长原创 2016-11-19 01:16:30 · 8234 阅读 · 0 评论 -
OpenGL+VS2015+WIN10 配置
OpenGL(glut与freeglut)+VS2015+WIN10 配置一、下载:在Windows下使用OpenGL需要GLUT - The OpenGL Utility Toolkit。 下载地址:GLUT3.7二、配置:解压下载好的文件,你会看到如下几个文件:glut.dllglut32.dllglut.hglut.libglut32.lib第一步:将glut.dll和glut32.dll原创 2016-11-20 14:32:08 · 12907 阅读 · 8 评论 -
OpenCL+VS2015+WIN10 配置
OpenCL+VS2015+WIN10(Nvidia GPU) 配置一、下载与安装:在Windows下使用需要OpenCL,需要相应的配置,并与主机所使用的GPU有关,在此介绍使用Nvidia GPU为主机的OpenCL的配置。下载:CUDA Toolkit 8.0 按照相应的操作步骤选择符合主机的信息,并选择exe(local)安装包。 安装下载好的安装包。二、配置:第一步:设置附加包含目原创 2016-11-20 15:08:05 · 7628 阅读 · 1 评论 -
贪心算法与活动选择问题 C++实现
贪心算法与活动选择问题贪心算法原理在之前的文章里,作者讲过动态规划,然而贪心算法和动态规划是有区别的:贪心算法并不是首先寻找子问题的最优解,然后再其中进行选择,而是首先做出一次“贪心”选择—-在当时(局部)看来是最优的选择—-然后求解选出的子问题,从而不必费心求解所有可能相关的子问题。贪心算法需要两个关键的要素—-贪心选择性质与最优子结构。贪心选择性质我们可以通过做出局部最优选择来构造全局最优解。在原创 2016-11-12 15:00:15 · 3701 阅读 · 0 评论 -
动态规划与钢条切割问题 C++实现
动态规划一、原理我们可以用拉格朗日乘数法,求解给定条件下的方程最优解,同样,动态规划算法也是用于在一定条件下的求解最优解的方法。它和分治方法很相似,都是通过组合子问题来求解原问题。一般适用于动态规划算法的问题具备两个条件:最优子结构和重叠子问题。考虑一般的递归算法,总是会重复调用问题的子结构,来解决原问题,可是正是因为重复调用时间与空间开销会很大。有没有什么办法能将递归方法变的简单一点呢?这就是动态原创 2016-11-01 19:50:17 · 3639 阅读 · 0 评论 -
Dlib+VS2017配置
Dlib+VS2017配置下载:Dlib官网配置:1、使用Cmake生成dlib.sln先解压。2、编译Dlib注意:使用管理员权限打开dlib.sln(先管理员权限打开VS2017,再加载此项目)生成解决方案:生成install生成后,默认生成文件在C:\Program Files\dlib 注意:如果生成失败,则请使用管理员权限打开此解决方案,再重新生成3、配置(1) VC++目录—>包含目原创 2017-03-19 20:26:08 · 6467 阅读 · 3 评论 -
一元多项式的加减法 C++实现
一元多项式的加减法c++实现原创 2017-06-13 15:55:41 · 3895 阅读 · 2 评论 -
C++读取txt中的矩阵数据并存入vector中
C++读取txt中的矩阵数据并存入vector中每种矩阵数据都有他的独特性质,比如有的全是整数,有的全是小数,也有的既有小数还有整数,还有的是负数,这些数字难以用指针对字符串操作来读取,但是用正则表达式就很好处理,下面我就以正则表达式处理文本数据中的整数来示例。假设有如下数据:0 9 13 3 0 0 400 0 22 0 12 0 00 2 0原创 2017-09-08 22:28:26 · 15560 阅读 · 7 评论 -
Boost1.62.0 + VS2015 配置
Boost1.62.0 + VS2015 编译与配置一、介绍、下载与安装 Boost也是一个C++库,同样也是由C++标准委员会发起并维护,与C++标准库不同的是,它开源,而且比标准库内容更强大。Boost是标准库的后备军,C++标准库里很多内容都是在Boost千锤百炼之后添加的。原创 2016-06-01 11:02:06 · 13936 阅读 · 12 评论 -
判断是否为C++合法标识符
判断是否为C++合法标识符需要C++11的支持源代码#include <iostream>#include <regex>#include <string>using namespace std;bool Jugement(const string &temp_str) { regex reg("[_[:alpha:]][_[:alnum:]]*"); if (regex_matc原创 2016-10-18 15:28:53 · 7982 阅读 · 0 评论 -
计算该日为本年中的第几天 C++实现
计算该日为本年中的第几天需要C++11的支持源代码#include <stdexcept>#include <iostream>#include <string>#include <vector>#include <regex>using namespace std;struct Date { int year; int month; int day;};bool原创 2016-10-18 15:05:36 · 1919 阅读 · 0 评论 -
C++数据结构 之 红黑树_Red Black Tree
C++数据结构 之 红黑树_Red Black Tree源代码只包含头文件注:需要C++11的支持原创 2016-08-20 13:29:30 · 1808 阅读 · 0 评论 -
C++数据结构 之 二叉搜索树_Binary Search Tree
C++数据结构 之 二叉搜索树_Binary Search Tree源代码只包含头文件注:需要C++11的支持原创 2016-08-18 00:19:27 · 884 阅读 · 0 评论 -
数组(Array) 与 智能指针
数组(Array) 与 智能指针关于智能指针处理数组对象,并不是很常见,因为有可能需要自定义删除方法。原创 2016-08-20 15:21:21 · 3083 阅读 · 0 评论 -
C++数据结构 之 哈希表(散列表)_Hash Table
C++数据结构 之 哈希表(散列表)_Hash Table源代码只包含头文件注:需要C++11的支持原创 2016-08-12 10:51:29 · 9701 阅读 · 1 评论 -
C++数据结构 之 链表_Linked List
C++数据结构 之 链表_Linked List源代码只包含头文件注:需要C++11的支持.原创 2016-08-10 11:57:05 · 10960 阅读 · 0 评论 -
C++数据结构 之 优先队列_Priority Queue
C++数据结构 之 优先队列_Priority Queue源代码只包含头文件注:需要C++11的支持。原创 2016-08-10 11:53:41 · 1285 阅读 · 0 评论 -
C++数据结构 之 队列_Queue
C++数据结构 之 队列_Queue源代码只包含头文件注:需要C++11的支持。原创 2016-08-10 11:40:50 · 2402 阅读 · 0 评论 -
C++数据结构 之 栈_Stack
C++数据结构 之 栈_Stack源代码只包含头文件注:需要c++11的支持。原创 2016-08-10 11:19:23 · 612 阅读 · 0 评论 -
C++_排序算法:冒泡排序、插入排序、归并排序、快速排序、堆排序、基数排序、桶排序、计数排序
C++_排序算法—冒泡、插入、归并、快速、堆、基数、桶、计数所有代码均可直接运行需要c++11的支持原创 2016-08-03 16:50:34 · 1101 阅读 · 1 评论 -
C++ 斐波那契数列(Fibonacci Sequence)
C++ 斐波那契数列(Fibonacci Sequence)一、斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)。也可用矩阵来表示:斐波那契数列在自然生活中无处不在,花瓣数目、黄金分割、杨辉三角、近似的股票波动周期等。原创 2016-08-26 15:03:59 · 7138 阅读 · 0 评论 -
杨辉三角 C++实现
简短的杨辉三角C++实现思想∵\because (kn)=n!k!×(n−k)!\binom{k}{n}=\frac{n!}{k!\times (n-k)!} 又 (k+1n)=n!(k+1)!×(n−k−1)!\binom{k+1}{n}=\frac{n!}{(k+1)!\times (n-k-1)!} ∴\therefore (k+1n)=(kn)×n−kk+1\binom{k+1}{原创 2016-10-10 13:38:17 · 1712 阅读 · 0 评论 -
为数字增加千位分隔符 C++实现_使用locale库
为数字增加千位分隔符 C++实现注:需要C++11的支持。效果:1234567890->1,234,567,890使用locale库中的grouping函数实现。源代码:#include <iostream> #include <string>#include <locale> //本地化库using namespace std;struct my_numpunct : numpunct<ch原创 2016-10-23 20:35:48 · 4565 阅读 · 0 评论 -
C++ 后缀表达式(逆波兰表达式),并求值(也可求小数、负数与大于10的数)
后缀表达式(逆波兰表达式),并求值,C++描述这是一个栈的简单应用。规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。原创 2016-04-24 14:33:42 · 3269 阅读 · 0 评论 -
动态规划之矩阵链乘 C++实现
动态规划之矩阵链乘 C++实现原理在上一次的文章当中,作者讲解了什么是动态规划,以及动态规划的一个举例应用,这次,我们来看看如何运用动态规划来解决矩阵链乘问题。关于矩阵的乘法,运用如下公式: C=A×BC=A\times B 其中 cij=∑k=1naikbkjc_{ij}=\sum_{k=1}^{n}a_{ik}b_{kj} 并不是任意两个矩阵都能相乘,必须满足AA的列数nan_{原创 2016-11-06 16:45:53 · 1874 阅读 · 0 评论 -
输出重复出现字符串中最多的一个 C++实现
输出重复出现字符串中最多的一个需要C++11的支持。源代码:#include <algorithm>#include <iostream>#include <string>#include <vector>#include <utility>using namespace std;void Count() { string temp_str, str; auto count_原创 2016-10-18 15:02:17 · 4392 阅读 · 0 评论 -
const 与 shared_ptr
const 与 shared_ptr注意: 需要c++11的支持 const 与 shared_ptr 之间的组合不是很常见,最多的也只是在传递参数时:shared_ptr<int> func(const shared_ptr<int> &ptr) { *ptr += 1; return ptr;}这里的 const shared_ptr<int> &ptr 和常规的 const T原创 2016-08-20 14:53:40 · 11086 阅读 · 3 评论