![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
弃用的分类:c++
文章平均质量分 58
姬小野
这个作者很懒,什么都没留下…
展开
-
C++ new动态分配内存和delete释放内存
C++中使用简便而强大的new和delete运算符来进行动态内存的分配.值得注意的是,new和delete和c语言中的malloc和free不同,new和delete是运算符,因此执行效率更高.如何使用new , delete 呢?首先我们来看一段代码:int *p = new int;我们可以看到有那些元素.首先是int, 它的含义是声明指针类型;其次原创 2018-01-05 12:26:27 · 8173 阅读 · 0 评论 -
杂记_C++小技巧们
如果你觉得这篇博客对你有帮助, 请点个赞吧 : ) 高能预警: 千万不要关注我 ! 千万不要关注我 ! 千万不要关注我 ! 因为我的博客将会让你的代码能力迅速提升! 学到很多有用的语言知识, 技巧! 期末考试拿满分! ACM竞赛摘金夺银! CCF考试499+! BAT免试通过! 从此升职加薪, 迎娶CEO, 出任白富美, 走上人生巅峰!今天我突然想写一个可以控制电脑定时关机的exe小程序,原创 2018-01-13 10:22:46 · 222 阅读 · 0 评论 -
解题报告_sum of consecutive prime numbers
POJ题目地址 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26954 Accepted: 14544 Description Some positive integers can be represent原创 2018-01-14 22:10:51 · 591 阅读 · 0 评论 -
一个栈字典序排列
时隔这么久又重新学算法, 惭愧.此题是牛客网一次比赛题, 拖了很久, 不过认真思考去做, 发现其实很简单. 简单地画个图, 推导一下排序过程, 就OK了.百度了一下, 发现关于栈排序的博客大都是双栈全排的, 大概那个要更复杂些. 不多说栈和排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Form原创 2018-01-23 11:13:02 · 910 阅读 · 2 评论 -
双栈排序
此篇博客要讲的是双栈排序, 即已知一个不规则栈的元素, 利用另一个空栈, 进行排序.我上一篇博客讨论了只用一个栈进行排序的情况, 因为栈这种数据结构的先入后出的特性, 只用一个栈很有可能无法全部排序, 只能获得字典序最大的排列. 而使用两个栈, 则可以全部排列.如何利用两个栈排列呢?此处讨论从栈顶到栈底的升序排列(对stack2).首先从stack1中取出一个元素temp, 然后从顶开原创 2018-01-23 13:51:33 · 285 阅读 · 0 评论 -
递归绘制图形
输入数字, 绘制如下图形 依次类推这类使用递归画图的问题, 关键要找到规律. 把一张图的各个元素解构, 得出递归关系. 如改图P(n)即为 P(n-1) P(n-1) P(n-1) P(n-1) P(n-1)找到每个图形的中心点, 然后分治地解决每个元素.如此图可以左上图为中心, 计算其他图相对此图的位置, 然后依次递归或以中间那个为中心点, 同理.原创 2018-01-23 20:29:07 · 4020 阅读 · 0 评论 -
对汉诺塔_递归问题的新理解
开始学C++函数是看到汉诺塔问题觉得好难理解, 当时记了记代码, 了解了些原理就跳过了.昨天时隔许久重新写汉诺塔, 错误百出. 查阅资料, 在现有的知识基础上有了更多更深的理解.这次对汉诺塔问题的过程以及对应代码有了明确认识 对递归或者说递推有了进一步认识写这篇博客除了加深相关认识和记录之外, 还有对以前的纠错和反思知乎上有很多关于汉诺塔问题的理解, 有的非常形象和详细汉诺塔递归原创 2018-01-24 13:27:43 · 572 阅读 · 0 评论 -
解题报告_POJ1979-red and black_深搜水题
POJ 1979 red and blackDescriptionThere is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to原创 2018-01-24 15:18:56 · 197 阅读 · 0 评论 -
回溯-八皇后问题
八皇后问题是经典的回溯问题 常用的方法是递归, 也可以暴力枚举 知乎上有用一行代码写的我刚接触算法时翻过紫书, 那时了解的知识太少了, 一次翻到八皇后问题, 觉得这好复杂, 怎么做得出来! 于是心里自我暗示地告诉自己这道题很难.直到今天在计蒜客上看视频时, 提到了八皇后问题, 鉴于视频上内容较基础, 我想是不是八皇后问题其实并不难?翻书之后, 以我现在的能力还是无法独立思考出, ...原创 2018-01-24 21:48:55 · 572 阅读 · 0 评论 -
C++使用随机数
因为平时随机数用的比较少, 总是会忘记如何使用, 所以常常是要用的时候到网上去查找资料, 觉得挺麻烦, 干脆自己写一篇.随机函数rand(), 包含在cstdlib头文件中. 有的博客文章给出的代码是没有这个的, 编译不通过, 误导别人.基本的用法是这样的:#include #include using namespace std;int main(){ int原创 2018-02-01 10:43:03 · 1096 阅读 · 0 评论 -
俄罗斯方块_二进制法_模拟
俄罗斯方块是我很早之前做的模拟题, 题目在当时看来挺复杂, 现在看来也是挺简单了. 昨天看视频看到状压DP用二进制表示状态, 对这种思维方式印象深刻, 于是乎今天早上突然想起了用二进制表示曾经做过的俄罗斯方块题目.因为那道题有方块为1没方块为0. 觉得可行, 故试之.结果没有想象中的代码少, 实现起来较为复杂. 不过还在用二进制表示的话, 空间复杂度和空间复杂度大大降低, 也不负这一番折腾原创 2018-01-25 09:51:48 · 537 阅读 · 0 评论 -
N柱汉诺塔问题_转载
以下内容全为转载:汉诺塔问题及其变形算法分析写在前面:本文章属于小编从网上整合而来!引言汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究。最简单的汉诺塔是三个柱子(A、B、C),因此多柱汉诺塔的柱子个数M≥3。下面从三柱汉诺塔说起,慢慢深入我们要关心的问题。三柱汉诺塔三柱汉诺塔是经典的汉诺塔问题,在算法设计中是递归算法的转载 2018-01-25 12:48:09 · 2024 阅读 · 0 评论 -
C++友元重载+运算符易错点
我今天晚上复习C++类的用法,在使用友元重载双目运算符+的时候,出现了一个诡异的错误.百思不得其解,专门重写一个类进行测试,最后发现了原因.猛然想起我之前也犯过这样的错误,以为经典,故记之. 奉上错误代码:#include using namespace std;class Complex { //一个复数类 public: Complex () {} /原创 2018-01-08 22:59:27 · 2506 阅读 · 1 评论 -
STL_排序与检索
STL中有支持排序和检索的函数如sort, 二分查找. 使用起来较为方便.sort函数添加在头文件algorithm中, 使用方法如: sort(start,end[,排序方法])int a[5] = {1,2,34,4,3};sort(a, a+5); //这是最简单的sort方法, 使用默认的排序方法升序排列sort(a, a+5, cmp); // cmp为bo原创 2018-02-03 11:58:07 · 207 阅读 · 1 评论 -
STL_vector_不定长数组
vector是STL中的一种容器, 是一种不定长的数组.包含在vector头文件中 使用方式为 vectorvec; //定义了一个vec数组 vector vec(10); //定义了元素数, 各元素都为0有 size()函数 //返回数组元素数, 即数组大小 resize()函数 //重置数组大小 push_back(argu)原创 2018-02-03 16:54:31 · 316 阅读 · 0 评论 -
STL_set_集合
——————2018-4-14更新——————— set中判定一个元素是否存在除了用find, 还可以用count()函数 如果存在, 返回一, 如果不存在, 返回0. (元素的数量)set的排序规则, 使用cmp结构体#include <iostream>#include <set>using namespace std;struct cmp {...原创 2018-02-03 17:40:48 · 238 阅读 · 0 评论 -
STL_map_映射
构造一个map的方法是 map m; map m; map m;在中指定一对键(key)值(value)的类型. 在map中可以通过重载了的[]来通过键访问值 即 m[“a”] = 1; m[“hello”] = 666;map常用函数如下 size() //返回map中元素数 clear() //清空map原创 2018-02-04 11:28:36 · 154 阅读 · 0 评论 -
set并集和交集&宏定义&typedef
看紫书P116, 发现这里的代码出现了几个没看过的函数, 百度了一下, 还真有, 而且用法比较奇特.紫书上使用宏(macro)很巧妙, 以前这样没用过 typedef也给我减少写代码提供了新思路主角是set相关的函数取两集合并集: set_union() 取两集合交集: set_intersection()要包含头文件algorithm函数的参数分别是 set_un原创 2018-02-04 22:11:01 · 376 阅读 · 1 评论 -
最大子段和_三种方法
今天参加了一场洛谷网的比赛, 深受打击. 寒假过了这么多天, 一直没有认真学习算法, 以至于现在的水平比两个月前还要低. 本来就没有多少底子, 又退步了许多, 感慨万分.在洛谷上看到这么一道题 最大子段和如果数据小的话, 用暴力枚举很简单就可以做出来了, 时间按复杂度位O(n^3) 可是一道算法题怎么会这么简单呢?样例的数据是非常大的, 所以用n^3的办法一个样例都过不了...原创 2018-02-09 20:36:11 · 1377 阅读 · 0 评论 -
洛谷_烤鸡_回溯和枚举
这是洛谷试炼场上新手村的一道Boss题, 让我头疼了好久洛谷各种题解感觉是不难的, 枚举或搜索也许都可以, 但是就是没明确思路, 想要写的时候, 不知从何下手看了不少题解之后, 写了回溯和枚举两种方法. 也看出了自己的一些问题.看书做了八皇后问题之后本以为掌握了回溯, 结果还只是停留在表面和片面的层次, 其他的回溯问题因为没有见过这样的模型就只有模糊概念而无精确的过程设计.所以...原创 2018-02-10 09:10:17 · 576 阅读 · 0 评论 -
洛谷_P1962_斐波那契数列
这道题是洛谷上提高+/省选-的题目.看上去是道简单的斐波那契数列, 可是看看数据范围, 用普通的递推方式肯定超时.那么这道题该怎么做呢?标准的做法似乎是矩阵快速幂(题解提到), 然而笔者还不会, 再看题解, 发现有其他的方法. 是一个从没见过或者见过但没有印象的斐波那契数的性质f(2n) = f(n+1)^2 - f(n-1)^2; f(2n+1) = f(n+1)^2 + f...原创 2018-02-11 10:39:10 · 413 阅读 · 0 评论 -
STL_queue_队列
包含在头文件 #include 有一下常用函数 push(x) 把x压入队尾 pop() 弹出队顶元素 front() 返回队顶元素 back() 返回队尾元素 size() 返回队列的元素数 empty() 返回bool数简单代码示例#include #include using namespace std;int ma原创 2018-02-06 11:23:28 · 196 阅读 · 0 评论 -
STL函数-nth_element()
nth_element()函数是STL中的一个函数, 在algorithm头文件中, 作用是给容器的第k个元素排序.没错, 就是给一个元素排序, 可以到第k个元素是什么, 时间复杂度为O(n)函数模板template< class _RanIt> void nth_element(_RanIt _First, _RanIt _Nth, _RanIt _Last); ...原创 2018-02-11 22:14:52 · 432 阅读 · 0 评论 -
DP动态规划_01背包问题
动态规划是一种思想, 因为很违背直觉, 所以初学时理解起来很困难, 和递归一样, 都是比较奇妙的思想.01背包问题是各类背包问题(见背包九讲)中最简单的一种模型, 但是理解它也花了我很多时间.网上和各种算法书籍都有关于背包问题的讲解.刚做了两道基础的01背包问题, 遇到了几个问题, 也靠自己解决了它们两道题: 1) 洛谷1048-采药 2) 洛谷1049-装箱问题...原创 2018-02-11 23:56:49 · 289 阅读 · 0 评论 -
double精度问题_杂
无类型的文件, 直接去掉后缀即可, 如sublime的默认文件类型时间复杂度为logn无底数因为: 从理论上,无论底是什么都无关紧要,因为不同底的logn之间只存在常数倍的关系,这与n无关,不会影响复杂度的大小。因为double这种浮点型的数在计算机中是按照二进制存储的, 而一个double数是64位, 8Byte期中指数位11位, 尾数为52位(二进制) 一个介绍浮点数的连接...原创 2018-02-13 09:52:43 · 2123 阅读 · 0 评论 -
不算高精度浮点和
一次做题笔记洛谷的一道50000个浮点数之和题目第一次是这么做的第二次 看了题解之后是这么做的第三种 还是题解中别人的代码可见解决问题的方法可以有很多种能力比知识更重要一次做题笔记洛谷的一道50000个浮点数之和题目内容涉及到long double,小数转unsigned long long第一次是这么做的直接声明两个long dou...原创 2018-02-13 11:04:58 · 195 阅读 · 0 评论 -
主元素问题_奇妙的思维
主元素问题什么是主元素问题先排序比较排序后计数的方法一个简单优化计数排序的方法用STL中的nth_element函数豆瓣里一种巧妙地方法总而言之 主元素问题是一种很简单的思维启发问题 方法有很多 可是你想到了最简单的方法吗主元素问题什么是主元素问题? 已知一个数组的大小,并且其中存在一个数,出现的频率大于50%,则称其为该数组的主元素。用...原创 2018-02-13 12:00:20 · 5307 阅读 · 0 评论 -
贪心_勇者斗恶龙
<<算法竞赛入门经典-训练指南>>第一道题目.被这本书吓到了, 以为都是难题. 这道题不难, 思路是贪心.时间复杂度也只有O(n)第一个版本核心部分虽然是二重循环嵌套, 但私以为有if控制条件, 实际上计算量是O(n)的.#include <bits/stdc++.h>using namespace std;void loop(int ...原创 2018-03-06 23:50:17 · 582 阅读 · 0 评论 -
搜索_DFS_走迷宫
今天学了搜索, 不过暂时还停留在较为初级的阶段这节介绍DFS和回溯.比较基础的DFS回溯题:走迷宫这道题不是裸的深搜题, 中间要记录走过的点, 用vector结构体储存期间出过几个小错误, 比如边界条件弄错发现这种格式比较复杂的题目中, 还是用printf()函数比较舒服 难怪Python也是这样用的注意回溯法的几个要点初始状态目标状态 状态恢复 // 尤其要...原创 2018-02-13 22:21:42 · 180 阅读 · 0 评论 -
搜索_DFS_全排列
全排列是什么? 比如1 2 3 这三个数的全排列是: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1用DFS生成一个序列的全排列很方便也很简单.同样, 用搜索树的概念去理解这样的一个过程时间复杂度为O(n!)一道全排列的问题基本是裸的回溯了#include <bits/stdc++.h>us...原创 2018-02-13 22:34:56 · 148 阅读 · 0 评论 -
搜索_DFS_选数和
这是一道选数题目, 我认为比较有价值不是很难, 但这道题的一种算法设计给了我一些启发, 让我进一步理解DFS. 以及搜索树!以前AC过, 开始靠自己是A不了的, 后来看了题解A掉了再次写的时候也A掉了, 但方法拙劣了很多, 很暴力的沿用全排列的方法, 有了很多重复计算.接触搜索不久, 还没有掌握什么剪枝的技巧 思路是: 枚举出所有的排列情况(期中k个数之和可能重复)...原创 2018-02-13 22:47:52 · 224 阅读 · 0 评论 -
贪心_突击战
<<算法竞赛入门经典-训练指南>>第二题.也是一道贪心题目. 就如书上分析所说, 直觉告诉我们, 这道题用贪心.书上一个我不曾了解的知识点: 向vector v中压入一个Job(自定义结构体)变量 v.push_back((Job){a, b});原Jobstruct Job { int a, b; };似乎不用写构造函数就可以构造一...原创 2018-03-07 12:48:34 · 195 阅读 · 0 评论 -
并查集基础
并查集是一种很有趣的数据结构. 最清楚说明并查集的例子是亲戚问题, 今天是大年初二, 四处亲戚来拜年, 学习并查集真是应景. 并查集是我新年学的第一种数据结构. 之前接触它的时候觉得这个名字的DS很复杂, 因为不了解且很难望文生义, 不过接触了之后, 发现比较简单的. 所以, 学算法千万不能畏难, 因为各种算法都不会是简单的, 但也不会是很难的. 只要你多去做做, 自己写写, 理解了就...原创 2018-02-17 19:20:34 · 169 阅读 · 0 评论 -
贪心_独木桥
独木桥这是一道贪心题, 刚开始死活贪不出, 没有明确的思路.对于这么多士兵行走, 难道每个士兵都去考虑, 然后还模拟士兵和士兵相撞产生的各种情况?问题的本质: 士兵相遇后, 原路返回, 但其实和士兵直走擦肩而过没有区别. 所以思路很明确了: 最小时间为所有士兵最小时间的最大值 最大时间为所有士兵最大时间的最大值第二版代码是这样的:#include &l...原创 2018-03-16 20:24:00 · 431 阅读 · 0 评论 -
贪心_两类活动安排问题
贪心算法活动安排问题算是典型的贪心问题了, 而且也和生活紧密联系.活动安排问题有两种非常相近的形式, 贪的方法也很相似. 因为之前做过期中一个问题, 做第二种问题时转不过思维来, 卡在那不知道怎么做.手动模拟的时候, 突然明白过来, 靠, 原来是这样!!!先分析第一题: 有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室, 请问最多可以安排多少个活动?...原创 2018-03-16 20:25:12 · 219 阅读 · 0 评论 -
编程实现高斯消元法
计算机计算线性方程组的解一般是用高斯消元法完成的.我写了一个简单的程序, 输入一个[(n*(n+1)]的增广矩阵, 求解各未知数的值.只能解答两种情况:1. 线性方程组有唯一解 2. 线性方程组无解时间复杂度为O(n^3).#include <iostream>#include <cmath>const double ESP = 1e-8;us...原创 2018-03-17 15:47:34 · 3226 阅读 · 0 评论 -
二叉搜索树_插入_查找_删除
声明: 第一次写二叉搜索树, 可能会有bug这棵二叉搜索树以中序遍历的方式输出, 所以插入(存储的规则也是按照中序遍历的规则)#include <iostream>using namespace std;struct Node { int key; Node *parent, *left, *right;};Node *root, *NIL;...原创 2018-03-11 23:45:17 · 177 阅读 · 0 评论 -
二叉堆_完全二叉树_优先队列
完全二叉树的逻辑结构是树结构, 但由于其特殊性, 数据结构中常用数组来存储.访问父节点, 左子结点, 右子节点都很方便 数组存储以1为起点 假设有某一结点u A[u/2]为其父节点, 当且仅当u>1 A[u* 2]为其左子结点, 当且仅当u*2 <= n A[u* 2 +1]为其右子节点, 当且仅当u*2+1 <= n#include &...原创 2018-03-12 22:54:18 · 329 阅读 · 0 评论 -
有根树的表达_左子右兄弟表示法
这是<<挑战程序设计竞赛2>>上的一节, 介绍了用左子右兄弟的方法存储一棵有根树.用递归的方法求出所有结点的深度, 复杂度为O(n)或者是单独求出一个结点的深度(递归或是循环)以及如何遍历一个结点的所有子结点#include <bits/stdc++.h>using namespace std;#define MAX 1005struct...原创 2018-03-06 09:13:33 · 3031 阅读 · 8 评论 -
二叉树的表达_结构体数组
思路是用结构体储存数的一个结点的信息, 其中包括parent, left, right;因为是二叉树, 所以不必使用左子右兄弟法同时, 因为本题二叉树的结点数量固定, 因此可以利用结构体数组来实现.涉及几个操作: 建立一棵二叉树 求二叉树各结点的深度 求二叉树各结点的高度 得到二叉树的信息并输出其实比上一篇有根树的表达更简单#include &l...原创 2018-03-06 09:18:10 · 1204 阅读 · 0 评论