算法
sukhoi27smk
学习是为了探索这个世界的本质
展开
-
LateX 笔记
y = \frac{a}{b}y = A_a+A_{bb}原创 2021-11-04 18:15:47 · 167 阅读 · 0 评论 -
五大算法之二--动态规划
动态规划--简单的理解 这个算法简单的来讲就是采用自底向上的方式递推求值,将待求解的问题分解成若干个子问题,先求解子问题,并把子问题的解存储起来以便以后用来计算所需要求的解。简言之,动态规划的基本思想就是把全局的问题化为局部的问题,为了全局最优必须局部最优。 多阶段决策问题是根据问题本身的特点,将其求解的过程划分为若干个相互独立又相互联系的阶段,在每一个阶段都需要做出决策转载 2013-04-18 11:01:01 · 763 阅读 · 0 评论 -
五大算法之三--贪心算法
一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。转载 2013-04-18 11:00:09 · 716 阅读 · 0 评论 -
贪心算法
顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。问题一、活动安排问题问转载 2013-04-18 10:59:27 · 913 阅读 · 0 评论 -
贪心算法精讲
一.贪心算法的基本概念 当一个问题具有最优子结构性质时,我们会想到用动态规划法去解它。但有时会有更简单有效的算法。我们来看一个找硬币的例子。假设有四种硬币,它们的面值分别为二角五分、一角、五分和一分。现在要找给某顾客六角三分钱。这时,我们会不假思索地拿出2个二角五分的硬币,1个一角的硬币和3个一分的硬币交给顾客。这种找硬币方法与其他的找法相比,所拿出的硬币个数是最少的。这里,我们下意识地转载 2013-04-18 10:23:11 · 884 阅读 · 0 评论 -
异或运算^和他的一个常用作用
发现一个新知识,介绍给大家:二进制异或运算:两者相等为0,不等为1.这样我们发现交换两个整数的值时可以不用第三个参数。如a=11,b=9.以下是二进制a=a^b=1011^1001=0010;b=b^a=1001^0010=1011;a=a^b=0010^1011=1001;这样一来a=9,b=11了。举一个运用, 按一个按钮交换两个mc的位置可以这样。转载 2013-04-26 09:13:47 · 909 阅读 · 0 评论 -
一面微创题--字符串逆序输出
最近一直在等面试消息,都有点着急了,的确,还有太多不足,笔面之后的一面技术面,幸运地是在三个面试者中面试官留下了我,可是一句话又搞的我一点底都没了:“你别以为你通过了就怎么着,其实你也很菜,你写的程序不过就是让我大概看懂了罢了。”可不,趁现在等消息好好想想写的那程序得了。当时一看题目感觉挺简单的,字符串逆序很容易实现呐。 实现要求是至多只能申请一个空间,不能用库函数。当时面试的时候是转载 2012-12-23 12:35:28 · 740 阅读 · 0 评论 -
阶乘算法简单实现
long int fac1(int n){ static long int f=1; f*=n; return f;}long int fac2(int n){ long int f=1; if(n==0|n==1) { f=1; } else { f=n*fac2(n-1); } return f;}void m转载 2013-01-16 21:08:54 · 630 阅读 · 0 评论 -
字符串逆序和统计数据中有多少位是1
void invert(char *str,int len){ int i,j,n,temp; n=(len-1)/2; for(i=0;i { j=len-1-i; temp=*(str+i); *(str+i)=*(str+j); *(str+j)=temp; } }int count(char *s,int len)转载 2013-01-16 21:08:19 · 496 阅读 · 0 评论 -
贪心算法的几个应用
贪心算法具有2个性质:1、贪心选择性质:只在当前状态下做最优选择,即局部最优选择,再自顶向下,去解做出这个选择后产生的相应子问题。每做一次选择,问题就转化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步做出的选择最终导致问题的整体最优解。2、最优子结构性质:问题的最优解包含子问题的最优解。 贪心算法的几个应用:哈夫曼编码:二转载 2012-12-19 09:39:23 · 1394 阅读 · 0 评论 -
二叉树<总结二>
二叉树基本知识点2: 二叉树的非递归后序遍历前序遍历是:根、左、右,后序遍历是:左、右、根,观察发现:前序和后序刚好遍历顺序相反。由于非递归后序遍历需要保存根节点及第几次访问,比较麻烦。可以将整个过程变为先非递归前序遍历,将结果保存,再将结果翻转即可。 已知二叉树的前序、中序序列,求后序序列void suffix_order(char* pre_orde转载 2012-12-19 09:40:58 · 538 阅读 · 0 评论 -
C库函数—strcpy实现
strcpy:将原串拷贝到目的串,不拷贝NULL 以下为具体实现:#include#include#includechar * strcpy(char * strDest, const char * strSrc){ if(NULL == strSrc || NULL == strDest){ return NULL;转载 2012-12-19 09:38:45 · 514 阅读 · 0 评论 -
二叉树<总结一>
二叉树的知识点1:二叉树存储结构前序建立二叉树前序遍历、中序遍历、后序遍历(递归、非递归)二叉树节点总数二叉树叶子节点数二叉树深度遍历二叉树第i层节点分层遍历二叉树(递归、非递归)求二叉树中节点的最大距离已知前序、中序,重建二叉树: 以下为具体程序,在devc++中验证正确: /*abd转载 2012-12-19 09:40:18 · 533 阅读 · 0 评论 -
一道解决的非常漂亮的算法题
这是多年以前做的一道题目,原题来自软件报或者电脑报 ,我记不清了。解决这个题目有一个关键的步骤,就是要求一个整数在一个整数三角阵中的坐标。这篇blog就是讨论这个求坐标的问题,不是讨论那个报纸上的题目。现在将题目描述如下:三角阵如下所示: 1转载 2012-11-21 14:24:49 · 456 阅读 · 0 评论 -
二叉树序列化
文件的大小尽可能的小。 想了四种方法: 第一种方法:把二叉树按前序和中序遍历一遍,存两次二叉树。 第二种方法:将二叉树按左枝为0,右枝为1进行路径编码,那么每个节点都可以表示成,节点信息和路径信息进行永久化。 第三种方法:将二叉树变成满二叉树,采用数组存储满二叉树,那么数据index和根据二叉树的节点信息进行永久化。01转载 2012-11-24 22:59:45 · 2130 阅读 · 0 评论 -
JOJ的2042面试题目的数学推导过程
JOJ的2042题目是一个程序理解题目,这个题目非常有意思,给出了下面一段C++源代码,要求计算出最后的输出结果,源代码如下:#includeint main(void){ int x = 987654321, c = 0, d = 1, e = 6; while(x--){ c += d, d += e,转载 2012-11-28 23:55:29 · 609 阅读 · 0 评论