
c++算法
mdjxy63
这个作者很懒,什么都没留下…
展开
-
《算法之美》第一二章读书笔记
第一章:1.分治法和动态规划(dp)的区别:1)分治法(自顶向下):主要用递归操作,并且各个部分之间没有联系。需要递归若干次并且需要重复计算已经计算好的数据。因此效率低function Devide(x){ if(足够小并且简单){return x;}else{for (int i=0;i<n;i++){devide(xi);//进行递归}}}主要应用:原创 2018-01-24 15:41:46 · 384 阅读 · 0 评论 -
平衡二叉树的左右旋
/*** 右旋(左子树比右子树高2,并且新插入的元素在左子树的左边)* 此时以左子树(k1)为轴,它的根(k2)进行右旋* 可以理解为它的根在它的右边,所以右旋(在右边旋转)* k2 k1* / \ / \* k1 Z ------- X k2...原创 2018-04-26 10:54:33 · 847 阅读 · 0 评论 -
DFS
参考链接:https://blog.youkuaiyun.com/fightforyourdream/article/details/12866861https://segmentfault.com/a/1190000006121957LeetCode 里面很大一部分题目都是属于这个范围,例如Path Sum用的就是递归+DFS,Path Sum2用的是递归+DFS+回溯这里参考了一些网上写得很不错的文章,总...转载 2018-04-21 12:11:42 · 182 阅读 · 0 评论 -
【C++】【总结】unordered_map,unordered_set,map和set的用法和区别
参考链接:https://blog.youkuaiyun.com/zjajgyy/article/details/65935473通过代码来区别unordered_map和mapunordered_map存储机制是哈希表,,即unordered_map内部元素是无序的。map是红黑树,map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。unordered_set和setunordered_set基...转载 2018-04-23 21:27:45 · 3681 阅读 · 0 评论 -
图的BFS和DFS之C++实现
参考链接:https://blog.youkuaiyun.com/starstar1992/article/details/68941763图的创建手动输入,并以节点数作为输入结束标志从文件读取,文件的从第二行开始,每一行结束都要有节点数作为结束 图的存储:vector< list<int> > graph;1图的BFS非递归实现,借助队列void bfs(int v)//以v开始做广...转载 2018-04-23 14:24:42 · 321 阅读 · 0 评论 -
《算法问题实战策略》6-3郊游问题代码
已经在vs2013跑通代码,写了测试用例#include "stdafx.h"#include<iostream>using namespace std;/*问题描述:输入:测试用例人数n,朋友关系组数:mm组朋友关系输出:成功配对情况种类*//*可能会出现重复计算问题:(0,1)和(1,0)应该是同一种分组情况,并且顺序会出现重复【(0,1)(2,3)】...原创 2018-03-21 23:03:14 · 425 阅读 · 0 评论 -
二项式的计算
一共有两种方法:1)递归调用2)动态规划1)递归调用int bino1(int n, int r)//二项式的递归求法{ if (r == 0 || r == n) return 1; return bino1(n - 1, r - 1) + bino1(n - 1, r);}2)利用动态规划int dp[1000][1000];const int M = 100000000000...原创 2018-03-21 21:24:52 · 2377 阅读 · 0 评论 -
平均移动(moving average)算法
在看《算法问题实战策略》这本书的时候,遇到了一个问题:平均移动,这个问题类似于区间问题,找出区间的两个端点,然后再进行操作1.n个数据找出M个月的平均移动1)时间复杂度O(n^2)vector<double>movingAverage1(const vector<double>&A, int M)//时间复杂度O(N^2){ vector<double&g...原创 2018-03-10 13:12:20 · 5038 阅读 · 0 评论 -
二叉树的前中后序遍历的递归非递归算法
1.前序遍历[cpp] view plain copy<span style="font-size:14px;">//前序遍历递归形式 void PreOderTraversal(Node<T> *root) { if(root) { cout<<root->data<<" "转载 2018-02-20 11:02:09 · 215 阅读 · 0 评论 -
c++红黑树
参考链接:http://blog.youkuaiyun.com/tostq/article/details/52727550http://blog.youkuaiyun.com/gao1440156051/article/details/51581394AVL是严格平衡树,但在增加或删除节点时,需要非常多的旋转操作。因此这一节我们介绍红黑树,红黑是弱平衡的,用非严格的平衡来换取增删节点时候旋转次数的降低,其在在增加或删除...转载 2018-02-11 16:04:54 · 213 阅读 · 0 评论 -
基于c++ STL的二叉树非递归遍历算法(前序中序后序)
参考链接:http://blog.youkuaiyun.com/j_anson/article/details/49671523二叉树的实现,使用栈构建一棵二叉树,然后求树高,递归先序遍历,中序遍历,后序遍历,访问左节点,访问右节点,非递归先序遍历输出,非递归中序遍历输出,非递归后序遍历输出。[cpp] view plain copy/* 二叉树实现 */ #include<iostream> ...转载 2018-02-10 11:01:10 · 709 阅读 · 0 评论 -
数据结构中AVL的c++实现
参考链接:http://blog.youkuaiyun.com/cjbct/article/details/53613436AVL树中,最重要的便是让树重新平衡,我们称个过程为旋转。旋转包括四种,主要是由于插入位置的原因导致的。旋转的过程可以看代码中的注释部分(569行-639行),有详细的解释。这次编写的过程中,将C++模板类的定义了和函数实现进行了分开(但是仍然在头文件中),遇到了比较多的问题。先看看代码...转载 2018-02-09 01:28:09 · 248 阅读 · 0 评论 -
背包问题的应用——(0/1背包,完全背包,多重背包)
参考链接:http://blog.youkuaiyun.com/wzy_1988/article/details/12260343多重背包问题:参考:http://blog.youkuaiyun.com/LYHVOYAGE/article/details/8545852将多重背包问题转化为0/1背包问题:http://blog.youkuaiyun.com/kyriesnow/article/details/4425转载 2018-02-02 14:01:36 · 947 阅读 · 0 评论 -
图的BFS和DFS之C++实现
图的创建手动输入,并以节点数作为输入结束标志从文件读取,文件的从第二行开始,每一行结束都要有节点数作为结束 图的存储:vector< list<int> > graph;1图的BFS非递归实现,借助队列void bfs(int v)//以v开始做广度优先搜索(非递归实现,借助队列){ list<int>::iterator it; visite...原创 2018-05-21 21:08:38 · 1131 阅读 · 0 评论