
算法
文章平均质量分 71
shatangju
这个作者很懒,什么都没留下…
展开
-
从大小为n的数组中取出m个数的组合
转载自http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html 作者:Microgoogle思路:递归遍历思想。按数组下标从小到大,如果从5个数中取出4个数,则第一个数与第二个数,至少要选择一个。之后从剩余的数中选择3个,方法与之前相同,依次递归。即,如果要从array[p...q]中选择m个数(m代码如下:转载 2013-03-19 10:20:32 · 2132 阅读 · 0 评论 -
对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到
源地址:http://blog.youkuaiyun.com/crasyangel/article/details/11138243以4*4矩阵为例1、全部红线元素设为集合A,全部黑线元素设为集合B;A或者B里面的元素彼此互不相邻,对其值没有贡献;也就是说对A里面的元素的值产生贡献的都是B集合里面的元素,sum(A)=sum(B)。2、任一元素必须小于等于其相邻元素(上下左转载 2014-03-23 15:58:34 · 1213 阅读 · 0 评论 -
寻找丑数
源地址:http://zhedahht.blog.163.com/blog/static/2541117420094245366965题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题转载 2014-03-24 11:28:09 · 474 阅读 · 0 评论 -
卡特兰数
源地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7450250Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数。悲剧啊,现在整理一下一、Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(转载 2014-03-23 16:38:33 · 465 阅读 · 0 评论 -
任务分配问题-匈牙利算法
一、问题描述问题描述:N个人分配N项任务,一个人只能分配一项任务,一项任务只能分配给一个人,将一项任务分配给一个人是需要支付报酬,如何分配任务,保证支付的报酬总数最小。问题数学描述: 二、实例分析---穷举法在讲将匈牙利算法解决任务问题之前,先分析几个具体实例。以3个工作人员和3项任务为实例,下图为薪酬图表和根据薪酬图表所得的cost矩阵。转载 2014-03-23 15:45:58 · 1939 阅读 · 0 评论 -
poj2253---dijkstra算法妙用
此题仍是求单源最短路径问题,故想到dijkstra算法。此处的最短不是路径边权之和最短,而是路径最大边长最短,即求青蛙需要的最小步长。改变dijstra算法的松弛条件:dis[i] = Math.min(dis[i], Math.max(dis[node], graph[node][i]));源代码如下:package onlineJudge;import java.原创 2013-04-26 12:45:48 · 609 阅读 · 0 评论 -
输出给定集合的所有排列与组合-python
输出全部排列:算法思想如下:假设集合中有元素1...n,对于每一个元素k,使之为排列第一元素,然后递归求其余n-1个元素的全排列。将结果合并,输出即可,可保证无重复,并且结果是升序。代码如下:'''Created on 2013-4-9@author: shatangju'''def perm(items, n=None): if n == None: n原创 2013-04-18 11:04:15 · 4144 阅读 · 0 评论 -
Floyd算法
弗洛伊德算法的设计使用动态规划思想。其递归式如下: k = 0时, Aij(k) = wij(端点i到j的权重) k > 0时, Aij(k) = min{Aijk-1), Aik(k-1)+Akj(k-1)}Aij(k)的含义是,从i到j, 只经过结点(不含起点与终点)1,2...k的最短路径长度。递归式如何得到此处不再详述。算法实原创 2013-04-18 10:54:11 · 562 阅读 · 0 评论 -
poj1062-子图dijkstra单源最短路径问题
题意:准驸马可以从任何一个物品所有者开始,用钱向之购买物品,然后用其拥有的物品再加部分金钱逐步向换取其他的物品,最终得到酋长的承诺。此题可转化为单源最短路径问题:由题意看来此题是多源单终点问题。选择任意起点,支付起点的权值(购买首件物品),之后每经过一条边意味着支付了交换金额,每到达一个点意味着拥有了某件产品(不必考虑非起点的点的权值,因为点代表的物品是由上一件物品和边对应的交换金额换来,而首原创 2013-04-23 11:11:40 · 876 阅读 · 0 评论 -
一致性hash算法
原博地址:http://blog.youkuaiyun.com/sparkliang/article/details/5279393一致性 hash 算法( consistent hashing )张亮consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用转载 2013-04-10 22:08:18 · 398 阅读 · 0 评论 -
poj-2255 已知数的前序与中序遍历序列,求后序遍历序列
算法来自于http://www.java3z.com/cwbwebhome/article/article18/report076.html?id=4765--------------------------------首先,树的任意子树的遍历结点序列一定是该树的遍历结点序列的一个连续子序列。preorder的第一个结点是根, 设为root,root这个结点会把inorder分为2部分(可转载 2013-03-27 20:07:47 · 518 阅读 · 0 评论 -
poj-2965
/***日历类问题,注意不包含今天*/#include #include #include using namespace std;#define HAAB_YEAR 365#define TZOLKIN_YEAR 260char haab_cal[19][10]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "原创 2013-03-19 19:21:36 · 485 阅读 · 0 评论 -
poj-1753
#include #include using namespace std;int arr[16], new_arr[16];int ARR_LEN = 16;int NUM, last = 0;int result[16];//题目要点是确定翻转组合。定义数组副本,翻转时用,递归结束还原。重点是组合的选择与保存void printM(void){ printf("原创 2013-03-19 15:44:47 · 474 阅读 · 0 评论 -
链表是否存在环及环入口点、两个链表是否相交、相交链表的第一个公共结点
源地址:http://redpaopaw.blog.51cto.com/7900594/12948261.求链表倒数第k个结点题目描述:输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。分析:设置两个指针p1,p2,首先p1和p2都指向链表头结点,然后p2向前走k步,这样p1和p2之间就间隔k个节点,最后p1和转载 2014-03-24 10:16:20 · 536 阅读 · 0 评论