算法
文章平均质量分 58
小小小青菜
2016年11月1日
展开
-
递归算法--->阶乘,Fibonacci数列,折半查找
1、 阶乘 int Factorial(int n)//阶乘{ int fin; if(n == 0||n == 1) return 1; else return n*Factorial(n-1) ;//----------------------递归核心:要求n!则需求n*(n-1)!}2、Fibonacci数列(1)递归实现:int Fibrecurre原创 2017-02-06 14:28:53 · 581 阅读 · 0 评论 -
动态规划——《3》最长公共子序列
问题背景:一个有机体的DNA为S1 = ACCGGTCGAGTGCGCGGAAGCCGGCCGAA;另一个有机体S2 = GTCGTTCGGAATGCCGTTGCTCTGTAAA;明确一点,S1和S2互不为子串关系。S1和S2的一个相似度衡量就是找出第三个S3,在S3中出现的基都出现在S1和S2中;这些基必须以相同顺序出现但是不必连续,找到的S3越长就表明其相似度越高。本例中的S3 = G原创 2017-08-23 15:04:32 · 391 阅读 · 0 评论 -
动态规划——《2》矩阵链乘法
问题描述: 给定n个矩阵构成一个链其中i = 1,2,3,...,n矩阵Ai的纬数位Pi-1 * Pi,对乘积A1,A2,... ,An以一种最小化标量乘法次数的方式进行加全部括号。原创 2017-08-22 19:04:04 · 279 阅读 · 0 评论 -
贪心算法——最大整数分解最大乘积
/*设n是正整数。现在要求将n分解为若干互相不同的自然数的和,且是这些自然数的乘积最大。输入:10输出:30*/分析:a+b=const ; 则 |a - b |越小,a*b就越大----------------------------------------------------------------------------------------------原创 2017-04-27 15:20:04 · 3982 阅读 · 4 评论 -
八大排序算法
一、直接插入:(从小到大排)从第二个开始(记为i)依次往后,每次和的前一个(i-1)比较。如果第i个元素 大于 第i-1个元素就不做改变,往后走。如果第i个元素 小于 第i-1个元素:把第i个元素当做哨兵,在0~i-1之间找到哨兵该呆的位置,插进去。核心代码:void InsertSort(int a[], int n) { for(int i= 1原创 2017-03-29 17:28:47 · 215 阅读 · 0 评论 -
分别根据前中序遍历和后中序遍历来推二叉树的结构
1、理论分析:数据结构的基础知识中重要的一点就是能否根据两种不同遍历序列的组合(有三种:先序+中序,先序+后序,中序+后序),唯一的确定一棵二叉树。然后就是根据二叉树的不同遍历序列(先序、中序、后序),重构二叉树。显然,这三种组合并不是都能唯一确定二叉树的,其中先序+后序就不能唯一确定一棵二叉树。这里我就不证明了。举个反例:反例:任何结点只有左子树的二叉树和任何结点只有右子树的二叉树,原创 2017-02-14 01:21:34 · 11539 阅读 · 1 评论 -
递归算法-->整数划分
何为整数划分:所谓整数划分,是指把一个正整数n写成为其中, 为正整数,并且 ; 为n的一个划分。如果 中的最大值不超过m,即 ,则称它属于n的一个m划分。例如:6的划分:6;5+1;4+2;4+1+1;3+3;3+2+1;3+1+1+1;2+2+2;2+2+1+1;2+1+1+原创 2017-02-06 21:08:19 · 20775 阅读 · 0 评论 -
递归算法-->全排列
何为全排列?就比如说:123;其全排列为:123 132 213 231 321 312void swap(int &a,int&b){ int temp; temp = a; a = b; b = temp; cout<<"交换了"<<a<<" 和 "<<b<<endl;//为了方便理解,加了一句。}void perm(int li原创 2017-02-06 18:51:31 · 296 阅读 · 0 评论 -
递归算法-->汉诺塔hanoi
汉诺塔递归算法的核心:如果只有一个盘子的话,就直接是把这个盘子往C柱子上移。否则的话就先把前面n-1个移到中间,再把第n个移到C柱子上,再把那n-1个移回来。分别对应以下的代码:void hanoi(int n,char from,char depend,char to){ if(n == 1) move(1,from,to);//如果只有一个盘子的话,就直接是原创 2017-02-06 14:46:02 · 362 阅读 · 1 评论 -
mac 下使用vs code 编译C++程序
1、安装软件https://code.visualstudio.com/Download从VScode官网中下载Mac系统适用VScode安装包;下载完成后,将zip安装包解压到桌面即可。2、安装插件打开VScode后,按下组合键“⇧⌘X”,打开扩展,输入“C/C++”,安装“C/C++”、“C/C++ Clang Command Adapter”,安装完成后,重启VScode让插件生效。3、“H...原创 2018-06-21 15:01:57 · 18890 阅读 · 4 评论