
C++
文章平均质量分 57
Reacubeth
imperfect but true
展开
-
Leetcode1293.网格中的最短路径
给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。示例 1:输入:grid =[[0,0,0],[1,1,0],[0,0,0],[0,1,1],[0,0,0]],k = 1输出:6解释:不消除任何障碍的最短路径是 10。消除位置原创 2020-10-24 00:04:11 · 1142 阅读 · 0 评论 -
动态规划——最大整除子集C++
来自LeetCode 368描述给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。如果有多个目标子集,返回其中任何一个均可。此题类似于求最长递增子序列http://www.omegaxyz.com/2017/05/12/longest_ascending_sequence/class...原创 2019-04-06 12:24:47 · 795 阅读 · 0 评论 -
三路快排C++实现与应用
本文共467个字,预计阅读时间需要2分钟。三路快排是快速排序算法的升级版,用来处理有大量重复数据的数组。主要思想是选取一个key,小于key的丢到左边,大于key的丢到右边,递归实现即可。具体操作过程参考:https://blog.youkuaiyun.com/k_koris/article/details/80585979C++代码:#include<iostream> usin...原创 2019-04-06 12:29:57 · 1319 阅读 · 0 评论 -
FatMouse’ Trade
简介贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。FatMouse’ TradeFatMouse’ TradeTime Limit:...原创 2019-04-18 10:09:43 · 482 阅读 · 0 评论 -
素数筛C++
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法。对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = sqrt(n),依次剔除Pi的倍数,剩下的所有数都是素数。具体操作如上述 图片所示。C++实现#include<iostream>#include<vector>u...原创 2019-05-02 19:17:11 · 1163 阅读 · 0 评论 -
Levenshtein编辑距离C++实现
简介Levenshtein Distance是1965年由苏联数学家Vladimir Levenshtein发明的。Levenshtein Distance也被称为编辑距离(Edit Distance)。在信息论和计算机科学中,Levenshtein Distance是一个度量两个字符序列之间差异的字符串度量标准,两个单词之间的Levenshtein Distance是将一个单词转换为另一个单...原创 2019-05-02 19:23:32 · 2905 阅读 · 0 评论 -
红黑树简介与C++应用
简介红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树和AVL树类似,都是...原创 2019-05-02 19:29:53 · 1144 阅读 · 0 评论 -
回溯法——素数环C++实现
本文共928个字,预计阅读时间需要3分钟。回溯法简介回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法的基本行为是搜索,搜索过程使用剪枝函数来为了避免无效的搜索。剪枝函数包...原创 2019-06-02 08:53:55 · 4231 阅读 · 0 评论 -
Prime Path素数筛与BFS动态规划
本文共2053个字,预计阅读时间需要6分钟。BFSBFS,其英文全称是Breadth First Search。 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实验里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(open-cl...原创 2019-06-02 08:56:45 · 310 阅读 · 0 评论 -
C++读取和写入文件(fstream等)
本文共321个字,预计阅读时间需要1分钟。2019年7月非常忙,这大概是这个月的第一篇吧。某高校机试需要从文件中读取数据并将数据写入到文件中。完成这一操作需要用到fstream模块,网上一堆资料,但是乱七八糟的,不能满足一些简单的需求,下面给出从文件中读(一行一行地读出所有字符)和向文件中写入数据(追加写入)的C++代码。从文件中读(一行一行地读出所有字符)采用的ifstream类型注意...原创 2019-07-24 10:03:15 · 1346 阅读 · 0 评论 -
并查集应用——PAT甲级2019春季
并查集适用问题举例1、已知,有n个人和m对好友关系2、如果两个人是直接的或者间接的好友(好友的好友的好友。。。),那么他们属于一个集合,就是一个朋友圈中3、写出程序,求这n个人中一共有多少个朋友圈更详细请查看http://www.omegaxyz.com/2019/02/25/union-find/PAT-2019年春季考试-甲级-3Telefraud(电信诈骗) remains a...原创 2019-07-24 10:07:07 · 423 阅读 · 0 评论 -
抽象工厂模式与单件模式C++混合实现
抽象工厂当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。单件模式Singleton就是确保一个类只有唯一的一个实例。Singleton主要用于对象的创建...原创 2019-07-24 10:15:51 · 1140 阅读 · 0 评论 -
适配器模式C++实现
本文共916个字,预计阅读时间需要3分钟。简介适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作适配器模式的别名为包装器(Wrapper)模式,它既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合。结构:客户端使用的Target类需要使用一个已经存在的接口Adapt...原创 2019-07-30 17:03:30 · 1482 阅读 · 0 评论 -
享元模式C++实现(flyweight)
简介动机假设成立一个外包公司,主要给一些私营业主建网站。商家客户都类似,要求也就是信息发布、产品展示、博客留言、论坛等功能。各个客户要求差别不大,但客户数量多。内部状态和外部状态在享元对象内部并且不会随环境改变而改变的共享部分,可以成为是享元对象的内部状态。随环境改变而改变的、不可以共享的状态就是外部状态。享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度...原创 2019-08-04 14:36:32 · 573 阅读 · 0 评论 -
组合模式与职责链模式编程实现
组合模式简介将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。动机总部、分部和办事处是成树状结构,也就是有组织结构的,不可以简单的平行管理。希望总公司的组织结构,比如人力资源部、财务部的管理功能可以复用于分公司。这其实是整体与部分可以被一致对待的问题。适用性想表示对象的“部分-整体”层次结构。希望用户忽略组合对象与单个对象的...原创 2019-09-14 09:47:51 · 978 阅读 · 0 评论 -
动态规划-最大的正方形面积
题目表述Given a 2D binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0...原创 2019-09-14 14:27:13 · 614 阅读 · 0 评论 -
迭代器模式C++实现
简介提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。动机一个聚合对象,如列表(List)应提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构。针对不同的需要,可能要以不同方式遍历这个列表。迭代器模式可以解决这些问题。这一模式的关键思想是将对列表的访问和遍历从列表对象中分离出来并放入一个迭代器(iterator)对象中。迭代器类定义了一个访问该列表元素...原创 2019-09-27 14:07:04 · 1328 阅读 · 0 评论 -
NSGA2算法中文详解与MATLAB实现整理
NSGA2算法NSGA-II多目标遗传算法概述http://www.omegaxyz.com/2017/04/14/nsga-iiintro/NSGA2算法MATLAB实现(能够自定义优化函数)http://www.omegaxyz.com/2018/01/22/new_nsga2/NSGA2算法特征选择MATLAB实现(多目标)http://www.omegaxyz.co...原创 2019-03-07 20:55:25 · 20847 阅读 · 12 评论 -
二叉树遍历的转换C++实现
二叉树的遍历分为以下三种:先序遍历:遍历顺序规则为【根左右】中序遍历:遍历顺序规则为【左根右】后序遍历:遍历顺序规则为【左右根】什么是【根左右】就是先遍历根,再遍历左节点,最后遍历右节点。举例来说:先序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBHKGFEA在转换过程中要注意:先序遍历根节点在首项中序遍历根节点在中间后序遍历根节点在最后因...原创 2019-02-01 15:53:42 · 1451 阅读 · 0 评论 -
递归下降实现LL(1)文法分析C语言与Python实现
对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的产生式A—>α|β 满足下列条件:(1)如果α、β均不能推导出ε,则 FIRST(α) ∩ FIRST(β) = ∅。(2)α 和 β 至多有一个能推导出 ε。(3)如果 β *═> ε,则 FIRST(α) ∩ FOLLOW(A) = ∅。将满足上述条件的文法称为LL(1)文法。例子:E-...原创 2019-01-14 19:50:29 · 4842 阅读 · 1 评论 -
AOJ-776 马的走法 动态规划
马的走法Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 14 Submission Accepted: 10 Description 在一个4×5的棋盘上,输入马的起始位置坐标(纵,横)位置,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日原创 2017-03-18 15:29:17 · 806 阅读 · 0 评论 -
求n!的位数以及求n!具体的值(C or C++)
首先我们先求n!位数 可以将n!表示成10的次幂,即n!=10^M(10的M次方)则不小于M的最小整数就是 n!的位数,对该式两边取对数,有 M =log10^n! 即: M = log10^1+log10^2+log10^3…+log10^n 循环求和,就能算得M值,该M是n!的精确位数。#include<iostream>#include<cmath>原创 2017-03-05 15:30:37 · 4102 阅读 · 0 评论 -
数据结构Huffman树及编码
一、 实验目的构造一个哈夫曼树,并根据所构造的哈夫曼树求其哈夫曼树的编码; 二、 基本思路将每个英文字母依照出现频率由小排到大,最小在左,组成一个序列每个字母都代表一个终端节点(叶节点),比较每个字母的出现频率,将最小的两个字母频率相加合成一个新的节点,将两个字母从序列中删除,将生成的节点加入到字母队列中重复前面两步,直到序列中没有字母为止 进行编码:给霍夫曼树的所有左链结’0’与右链结原创 2017-06-16 23:42:56 · 2191 阅读 · 2 评论 -
迷宫问题的通用解法C语言数据结构实现
1.1问题描述 以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。1.2基本要求 输入的形式和范围: 非递归:行列为整型,坐标为整型递归:迷宫以整型二维数组形式输入输出的形式:非递归输出三元组通路和方阵通路; 递归以方阵输出迷宫和所有通路;1、非递归算法,求一条通路输出三元组形式如:(1,1,1)原创 2017-06-19 23:20:02 · 7289 阅读 · 1 评论 -
课程设计旅游景点咨询系统
欢迎访问我的网站:omegaxyz.com 问题描述:创建一个至少有15个点的有向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:“天地广场门”,“十八盘”,“冯玉祥墓”,“桃花峪门”,“中天门”,“南天门”,“玉皇顶”等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。1.基本原创 2017-07-22 09:36:33 · 3318 阅读 · 2 评论 -
课程设计哈夫曼编/译码系统
更多内容访问:omegaxyz.com 问题描述:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(解码)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站设计一个哈夫曼编译码系统。1.基本要求(1)初始化(Initialzation)。原创 2017-07-03 10:29:01 · 4785 阅读 · 21 评论 -
数据结构串的基本操作及KMP算法
将串的基本操作C语言实现,实现KMP算法算出NEXT函数和NEXTVAL的值。SqString.h的基本内容typedef int Status;typedef struct{ unsigned char data[MAXSTRLEN+1]; int length;}SString;Status StrInput(SString &S);void StrAssign(SStr原创 2017-08-07 11:35:24 · 1500 阅读 · 0 评论 -
规则绝对公平时,社会财富的流向谁?
从知乎有一个很有趣的问题:房间里有100个人,每人都有100元钱,如果每过一分钟,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的? 这个问题,可以看成一个小型实验,模拟的是规则绝对公平时,社会财富的流向。财富随机流动的话,贫富差距是否就会消失呢? 城市数据团用程序模拟了这个过程: 就这样,80%的钱跑进了20%的口袋里。即使在最公平的规则下,世界依然展现出了原创 2017-08-25 09:33:52 · 1983 阅读 · 0 评论 -
n阶行列式计算Python和C语言实现
行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。 行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。或者说,在 n 维欧几里得空间中,行列式描述的是一个线性变换对“体积”所造成的影响。 这里介绍一下计算机计算行列原创 2017-09-11 23:43:06 · 9562 阅读 · 4 评论 -
C++构造函数与析构函数
构造函数,就是用来初始化变量的,它是用系统自动调用的,要是没有写构造函数的话,系统会为之生成一个默认的构造函数,它的调用就是在声明变量的时候系统就自动地隐式调用。C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数原创 2017-09-30 08:17:57 · 608 阅读 · 0 评论 -
C++运算符重载详解
为什么要对运算符进行重载C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其新的功能,以满足自身的需求。C++运算符重载的实质运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够用同名的函数来完成不同的基本原创 2017-10-14 09:04:07 · 418 阅读 · 0 评论 -
C/C++移位运算符
在一般的C语言教学中,移位运算符很多情况下讲师直接跳过,更多的会在汇编语言中系统得讲述。然而,熟练掌握。高级语言中的移位很大程度上可以展现一个人的代码功底并且能提高编程效率。更多内容访问omegaxyz.comC/C ++提供位逻辑运算符和移位运算符。二者只能用于整形和字符型。位运算符是对每位进行操作而不影响左右两位,这有别于常规运算符(&&|| !)是将整个数进行操作的。一. 位逻辑运算符1. ~原创 2017-10-24 11:52:54 · 3195 阅读 · 0 评论 -
蒙提霍尔问题(三门问题,概率论)C语言验证
三门问题——亦称为蒙提霍尔问题,出自美国的电视游戏节目Let’s Make a Deal。问题的名字来自该节目的主持人蒙提·霍尔(Monty Hall)。问题是这样的:参赛者面前有三扇关闭着的门,其中一扇的后面是一辆汽车,选中后面有车的那扇门就可以赢得该汽车, 而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,主持人会开启剩 下两扇门中的一扇,露出其中一只山羊。主持人其原创 2017-11-09 23:13:11 · 5991 阅读 · 0 评论 -
C++对类或结构体进行指定规则排序
STL中就自带了排序函数sortsort 对给定区间所有元素进行排序.使用#include sort即可使用,语法描述为:sort(begin,end,cmp),表示一个范围。其中cmp是自己指定的比较规则。函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 par原创 2017-12-03 17:51:06 · 3553 阅读 · 0 评论 -
NSGA-Ⅱ算法C++实现(测试函数为ZDT1)
在看C++实现之前,请先看一下NSGA-II算法概述http://www.omegaxyz.com/2017/04/14/nsga-iiintro/NSGA-Ⅱ就是在第一代非支配排序遗传算法的基础上改进而来,其改进主要是针对如上所述的三个方面: ①提出了快速非支配排序算法,一方面降低了计算的复杂度,另一方面它将父代种群跟子代种群进行合并,使得下一代的种群从双倍的空间中进行选取,从而保留了转载 2017-06-15 23:38:13 · 13195 阅读 · 33 评论 -
提高C++运行效率的方法
一、尽量减少值传递,多用引用来传递参数。 至于其中的原因,相信大家也很清楚,如果参数是int等语言自定义的类型可能能性能的影响还不是很大,但是如果参数是一个类的对象,那么其效率问题就不言而喻了。例如一个判断两个字符串是否相等的函数,其声明如下:C++bool Compare(string s1, string s2) bool Compare(string *s1, string *s...转载 2018-03-12 14:32:19 · 666 阅读 · 0 评论 -
C++静态成员详解
静态成员是解决同一个类的不同对象之间数据和函数共享问题的。实例属性:一个类的所有对象具有相同的属性,属性值可以不同。类属性:描述类的所有对象共同特征,对于任何对象其属性值相同。静态数据成员用关键字static声明该类的所有对象维护该成员的同一个拷贝必须在类外定义和初始化,用(::)来指明所属的类。类名::标识符静态成员函数类外代码可以使用类名和作用域操作符来调用静态成员函数。也可以直接使用对象名来...原创 2018-05-10 21:06:29 · 539 阅读 · 0 评论 -
求字符串的最小正周期
求字符串的最小正周期#include <iostream>#include <cstring> using namespace std; int main() { int n; char data[100]; cin>>n; while(n--) { cin>>data; int l原创 2017-01-22 13:45:37 · 1228 阅读 · 0 评论