摘要:
问题一解法: 我们知道求N的阶乘结果末尾0的个数也就是说我们在从1做到N的乘法的时候里面产生了多少个10,我们可以这样分解,也就是将从0到N的数分解成因式,再将这些因式相乘,那么里面有多少个10呢?其实我们只要算里面有多少个5就可以了? 因为在这些分解后的因子中,能产生10的可只有5和2相乘了,由于2的个数是大于5的个数的,因此我们只要算5的个数就可以了。那么这个题目就是算这些从1到N... 阅读全文
摘要:
如何自己实现一个动态存储的分配机制,当然有很多的存储的分配方法,关键在于“堆”的管理。这里我们使用“隐式链表”的方法实现对“堆”的分配。而且分配的单位是“字”,这里的字是4个字节,而且我们分配的内存都按8字节(也就是双字)对齐。上图中一个空格代表一个字(4字节)也就是我们的堆开始三个字是堆的对齐和头部用的。最后是堆的尾。上图是我们堆的“分配块”的头部,由于我们的堆是以8字节对齐的,也就是分配的最小... 阅读全文
摘要:
首先来看图,来看下压入顺序是1、2、3、4、5.弹出顺序是4、5、3、2、1的情况下的栈的顺序: 是这样没错。怎么来的呢?我们结合压入和弹出的数组来考虑。首先我看弹出的数组: 为什么4在最开始处呢?压入顺序是: 说明这个栈里己经有了1、2、3、4于是我们弹出4。现在弹出顺出数组里指向了5现在我们栈里没有5啊?哪来的5。于是我们先压入5.再弹出5于是看我们的弹出数组现在指向了3... 阅读全文
摘要:
打印方法: 我们采用计数的方式进行打印,如第一次打印,第二次打印,第。。。。。。。 我们知道,第一次打印时,是打印其最”外围“数字。 我首先打印行 1、2、3 然后打印列 6再打印行 9、8、7 再打印列 4我们要注意的是什么情况下才会打印,也就是说如: 因些要对要打印的条件进行严格限制。左图中,由于有只有两行,那么左边那列就没有了。中间那图,... 阅读全文
摘要:
唉,这么简单的东西,说简单是简单,关键是要把这东西写得好,老少兼知。应对所有测试用例,那就有点难了吧。话说天下之事,作于细。我们用图来说说吧: 看合并的步骤:(1) (2) (3)(4)源代码:#ifndef COMBINE_TWO_LIST_H#define COMBINE_TWO_LIST_H#include"reverseList.h"ListNode *combi... 阅读全文
摘要:
这里给大家推荐一个好的文章 http://www.hawstein.com/posts/dp-knapsack.html 关于0-1背包问题,也许很多人看过《背包问题九讲》,里面主要是要理解那个背包问题的公式 ………………………………………………(1) 公式(1)当然是关键,其实我们很直观地从(1)中看出它的物理含义。F[i,v]... 阅读全文
摘要:
在我以前的文章中都有讲过关于数组指针及指针数组的相关问题,但是讲得不够深入,我后来后了别人写的博客后觉得人家的确实写得好,也学到了不少东西,对以前的问题有深的领悟了,于是准备结合这些博客和文章再稍微深入一点讲讲这些问题。这些指针的问题是C语言中的基础与关键而且一旦出现这些问题,不太好找bug的来源,有时候不得不借助反汇编。参考文章: http://c.biancheng.net/cpp/ht... 阅读全文
摘要:
对于C++中,两个类中相互引用对方,当然只能是在指针的基础上,于是我们知道。也就是说在A类的有一个指针引用B类的成员函数或成员对象,而B类中又有一个指针来访问A中的成员函数或对象。这就是C++中类的交叉引用编译于。那如何解决这个问题呢?当然方法很多,但是我一般采用的方法就是声明与实现的分离。也就是说类中的成员函数我们只在类中声明,然后函数的实现要放到另一个文件中去。主要是在类中的交叉引用时候,存在... 阅读全文
摘要:
问题描述:假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有活动。请给出一个算法,来确定哪一个活动使用哪一间教室。这个问题也被称为区间图着色问题,即相容的活动着同色,不相容的着不同颜色,使得所用颜色数最少。解法思想: 其实我们知道,对于单个教室我们可以用贪心算法进行求解,但是对于这个区间图的问题,我们采用的方法是多次的贪心。其实你想想看,你无非就是要使那些活动全部被安... 阅读全文
摘要:
这个题目来讲,应该是在二叉树里面较为容易的题目了。那么如何下手呢?其实对于这样一棵二叉树来讲。我们如何求它们的最低公共父节点呢?假如是要你求5、6的公共父节点,那么是3.啰为什么是3? 因为3的左子树是5,而右子树是6啰。那么7、8的最低公共祖先呢? 1啊,因为1的左子树中有7、而1的右子树中有8啊。那么思路来了。我们只要证明某一节点的左子树和右子树分别包含这两个节点就行了。于是思路来... 阅读全文