数据结构与算法
文章平均质量分 90
浩世轩宇
这个作者很懒,什么都没留下…
展开
-
递归算法详细分析(如何更好的理解递归)
C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。 这里有原创 2014-03-05 11:24:24 · 6592 阅读 · 1 评论 -
创建二叉树,C语言实现
#ifndef BITREE_H#define BITREE_H#include#includetypedef char ElementType;typedef struct treenode{ ElementType data; struct treenode *leftchild; struct treenode *rightchild;} TreeN转载 2014-03-05 11:09:03 · 2841 阅读 · 0 评论 -
动态规划详细解析---及各类问题解决方案
动态规划 算法总体思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。动态规划基本步骤:(1)找出最原创 2014-03-08 10:14:59 · 2508 阅读 · 0 评论 -
动态规划之最长公共子序列(LCS)
动态规划之最长公共子序列问题前言:一个给定序列的子序列,就是将给定的序列中零个或多个元素去掉后得到的结果。其形式化定义如下:给定一个序列X={x1,x2,x3,x4….Xn},另一个序列Z={z1,z2,z3,z4……Zn}满足如下条件时称为X的子序列,即存在一个严格递增的X下表序列(i1,i2…….ik),对所有j=1,2,3,…..k满足xi=zj例如Z=是X=的子序列对应的下标的序列原创 2014-03-09 16:23:41 · 2849 阅读 · 0 评论 -
char* 和char[]的区别
以下内容均来自互联网,系笔者汇总并总结。1. 问题介绍问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码#include using namespace std;main(){ char原创 2014-10-11 09:13:13 · 622 阅读 · 0 评论 -
动态规划问题之钢条切割
动态规划之钢条切割问题:问题描述:假定我们知道sering公司出售一段长度为I英寸的钢条的价格为pi(i=1,2,3….)钢条长度为整英寸如图给出价格表的描述原创 2014-03-08 13:50:31 · 1758 阅读 · 0 评论 -
STL算法概述
STL经典总结....转载 2014-03-23 10:35:33 · 1218 阅读 · 0 评论 -
位操作实现加减乘除四则运算
1. 题目描述如何使用位操作分别实现整数的加减乘除四种运算?2. 解决方案需要熟练掌握一些常见功能的位操作实现,具体为: 常用的等式:-n = ~(n-1) = ~n+1 获取整数n的二进制中最后一个1:n&(-n) 或者 n&~(n-1),如:n=010100,则-n=101100,n&(-n)=000100 去掉整数n的二进制中最后一个1:n&(n-1),如转载 2014-10-10 16:30:44 · 1404 阅读 · 0 评论 -
算法之排列与组合算法
1. 前言本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等。2. 排列算法常见的排列算法有:(A)字典序法(B)递增进位制数法(C)递减进位制数法(D)邻位对换法(E)递归法介绍常用的两种:(1) 字典序法对给定的字符集中的字符规定了一个先后关系,在此基础上按照顺序依次产转载 2014-03-03 22:32:14 · 901 阅读 · 0 评论