算法思路:
一个栈用来入队列,一个栈用来出队列:
现有两个栈s1 和s2;s1用来入栈,比如 队列进入 1 2 3 4 5 那么s1进栈 1 2 3 4 5 ,现在要出队列,意思就是要1先出来;
那么我们把栈s1的数据取出来都压到栈s2当中,那么栈s2就是 5 4 3 2 1 ;s2再出栈,此时1出栈就模拟出出队列的效果;
编写代码:
// QueueFrom2Stack.cp...
分类:
编程语言 时间:
2014-12-08 19:40:39
阅读次数:
215
折叠菜单
* {
padding: 0;
margin: 0;
}
#FoldingMenuBar {
margin: 200px;;
}
li {
list-style: none;
}
.left {
float: left;
}
.TotalMenu {
float: le...
分类:
编程语言 时间:
2014-12-01 11:27:32
阅读次数:
229
KMP算法时间复杂度为O(m+n),直观地看,是因为在匹配过程中指针 i 没有回溯。KMP算法的核心思想是利用已经得到的部分匹配信息来进行后面的匹配过程。 KMP算法思路:从主串s的第pos个字符起和模式的第一个字符比较之,若相等,继续逐个比较后继字符。当一趟匹配过程中出现字符比较不等时,不回...
分类:
编程语言 时间:
2014-11-26 01:16:49
阅读次数:
250
http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1911
最长单减子序列、最长单增子序列、相继元素之间满足某种条件(例如绝对值之差不超过d)的最长子序列等,都是一个类型的动态规划。
下面给出一个n平方级别的基本算法。
思路:定义dp[i]代表A[i:n]中,以A[i]为开头的最长单增序列的长度。
从A...
分类:
其他好文 时间:
2014-11-20 13:42:51
阅读次数:
160
算法分析:
本题是拓扑排序的典型应用。
由于顶点数量不多,可以采用邻接矩阵来存储图信息,这样算法比较简单,只需要搜索n次,每次把序号最小的入度为0的顶点存储到拓扑序列中就行了。算法思路比较清晰,代码也比较简洁,但时间复杂度和空间复杂度都较高。
另一种方法是采用邻接表存储图信息。由于题目要求输出时编号小的队伍在前,所以在入栈时一定要保证先让序号最小的入度为0的顶点在栈顶,这样根据后进先出的特点,可以把序号最小的顶点存储到拓扑序列中。我采用折半插入排序的方法,把入度为0的顶点按递减序排序,然后对图进行深度优先...
分类:
其他好文 时间:
2014-11-19 16:05:59
阅读次数:
174
【算法思路】时间复杂度限制在O(n log n),我们可以第一时间想到常用的二路归并排序,快速排序和堆排序,其中快排和堆排只适用于线性表,即数组,故这道编程题毫无疑问用二路归并排序;
【编程步骤】
* 1. 利用一个小技巧,可以设置慢行指针low和快行指针fast,把链表分成两部分来操作,即first和second链表
* 2. 递归排序first和second链表,即
first=sortList(head);
second=sortList(second);
* 3. 合并这两个链表,即:...
分类:
其他好文 时间:
2014-11-18 10:23:15
阅读次数:
185
约瑟夫问题描述:从N个人中选出一个领导人,方法如下:所有人排除一个圆圈,按顺序数数,每数到第M的人出局,此时他两边的人靠拢重新形成圆圈,从已出局人的下一个继续进行。问题是找出哪一个人将会是最后剩下的那个人,甚至我们更希望知道出局人的顺序。算法思路:构造一个循环链表来表示排成圆圈的人。每人的链接指向圆...
分类:
其他好文 时间:
2014-11-18 00:11:44
阅读次数:
165
给定中序遍历inorder和后序遍历postorder, 请构造出二叉树.算法思路: 设后序遍历为po, 中序遍历为io.首先取出po的最后一个节点作为根节点, 同时将这个节点入stn栈;随后比较io的最后一个节点和stn栈顶节点:如果不同则将此节点添加到栈顶节点的右侧并入stn栈, 同时从po中删...
分类:
其他好文 时间:
2014-11-04 16:39:28
阅读次数:
162
问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串。例如:“acbbsdef”和"abbsced"的最长公共字符串是“bbs”算法思路:1、把两个字符串分别以行和列组成一个二维矩阵。2、比较二维矩阵中行和列对应的每个点的字符是否相同,是设置这个点为1,否设置这个点为0。3、通过查找...
分类:
编程语言 时间:
2014-11-02 13:39:24
阅读次数:
248
之前就写的是离线算法。思路就是先序一遍树,记录层数,然后高效RMQ就好。ST和线段树都能过。以后有时间将之前的在线算法补上。#include using namespace std;#define MAXN 100005#define MAXM 105#define inf 0x7ffffffint...
分类:
其他好文 时间:
2014-10-29 01:41:39
阅读次数:
269