算法
文章平均质量分 69
Lizo_Is_Me
这个作者很懒,什么都没留下…
展开
-
找零问题 动态规划
当一个币值组合用贪婪算法不能找出最优解的时候,比如对于 1,2, 5 ,7,10。如果找14元钱的话,贪婪算法答案是10,2,2,但最优解为7,7。那么利用动态规划就能找出最优解,只是时间和空间复杂度都很高,O(nm)。首先写出状态方程 | ----- F(i-1,x) , 如果v[i]>x 即当如果当前选择的币值大于找零的值F(i,x)=|原创 2014-05-21 15:51:09 · 1220 阅读 · 0 评论 -
利用位运算实现加、减、乘、除
1.加法加法其实主要问题是怎么处理进位,当然我们可以每一位分别相加,然后用一个变量来保存下一位是否进位private static int add(int a, int b) { int res = 0; int jinwei = 0; for(int i = 0 ; i <32 ; i++){ int numA = (a>>i) & 1; int numB = (原创 2015-09-10 20:52:29 · 1052 阅读 · 0 评论 -
机器学习之-BoostedTree
1. 前言应 @龙星镖局 兄邀请写这篇文章。作为一个非常有效的机器学习方法,Boosted Tree是数据挖掘和机器学习中最常用的算法之一。因为它效果好,对于输入要求不敏感,往往是从统计学家到数据科学家必备的工具之一,它同时也是kaggle比赛冠军选手最常用的工具。最后,因为它的效果好,计算复杂度不高,也在工业界中有大量的应用。2. Boosted Tree的若干同义词说到这转载 2015-04-23 10:24:11 · 4479 阅读 · 0 评论 -
sunday算法简介
概述一说到字符串匹配算法,脑海里的第一映像,大部分是KMP算法,因为一般教科书里面都有,但是kmp算法对于我这种脑袋不怎么好用的,看完过一段时间就忘了。sunday同样是作为字符串匹配算法,比kmp,bm算法快,关键的关键是原理简单。问题描述先说说sunday算法解决的问题吧:给两个字符串A,B,问字符串A的所有子串中有没有B 具体的例子来说,给你一篇文章,判断该文章里面有没有“我爱我的家”这句原创 2015-04-21 22:03:42 · 1111 阅读 · 0 评论 -
TimSort--归并排序的优化
简介MergeSort对已经反向排好序的输入时复杂度为O(n^2),而timsort就是针对这种情况,对MergeSort进行优化而产生的,平均复杂度为n*O(log n),最好的情况为O(n),最坏情况n*O(log n)。并且TimSort是一种稳定性排序。思想是先对待排序列进行分区,然后再对分区进行合并,看起来和MergeSort步骤一样,但是其中有一些针对反向和大规模数据的优化处理。步骤分区原创 2015-04-23 17:39:24 · 2007 阅读 · 0 评论 -
编程题-贿赂囚犯(Bribe the prisoners)-动态规划|剪枝
转载请注明出处:http://blog.csdn.net/Lizo_Is_Me/article/details/43735509问题描述:一个监狱里有P个并排着的牢房,从左往右一次编号为1,2,…,P。最初所有牢房里面都住着一个囚犯。现在要释放一些囚犯。如果释放某个牢房里的囚犯,必须要贿赂两边所有的囚犯一个金币,直到监狱的两端或者空牢房为止。现在要释放a1,a2,...,aQa_1,a_2,...,原创 2015-02-11 16:33:13 · 2504 阅读 · 4 评论 -
编程题-线段上格点的个数-最大公约数
线段上格点的个数给定平面上的两个格点P1(x1,y1)P_1(x_1,y_1)和P2(x2,y2)P_2(x_2,y_2),线段上P1P2P_1P_2上,除P1P_1和P2P_2以外一共有多少格点虽然可以用穷举法,遍历min(x1,x2)≤x≤max(x1,x2)且min(y1,y2)≤y≤max(y1,y2)min(x_1,x_2)\le x \le max(x_1,x_2) 且 min(y_1,原创 2015-02-09 14:08:20 · 1123 阅读 · 0 评论 -
对称矩阵的压缩
今天写一个程序,简单描述就是在二维坐标系中, 存在若干个点,求每个点之间的距离, 首先想到的是用邻接矩阵,由于点很多,并且A距离B 和B距离A 肯定是一样的,用矩阵表示是一个对称矩阵,考虑使用对称矩阵压缩。A_ij表示第i行j列的数据由上图可以知道,A_ij和A_ji的值是一样,并且我的需求中,对角线上的数据都是0,然后我们就可以用一个三角矩阵来表示。具体的压缩网上很多资料,我原创 2015-01-26 18:40:52 · 971 阅读 · 0 评论 -
人民币找零的贪婪算法最有解的证明
人民币的币值有1,5,10,20,50,100。首先:对于,1那为什么我们用贪心算法能找到最优解?其实很简单,因为对于任何一个币值,任何2张比他的小的加起来都不会比他大。比如对于100元,就算用2张50,加起来也不会超过100,那么,能用100的地方,如果你用了比他小的面值,用的张数肯定不会比他小。我的证明如下:假设需要找零的钱是a,我们用贪心算法得到的解是{x_1,x_2,.原创 2014-05-21 15:52:59 · 2897 阅读 · 0 评论 -
利用位运算设置标志位
java里面,int型占8bit,既由8位“”或1组成原创 2014-09-09 10:49:25 · 3451 阅读 · 0 评论 -
最小点权覆盖的近似算法
这学期上了算法设计与分析,刚复习到近似算法这,写点东西加深印象近似算法一:利用线性规划对于每个顶点,要么在最小点权覆盖中,那么没在(废话么!),所以我们用 0/1来表示我们的目标是让权值最小,自然目标函数是 min(∑ wi xi) wi表示第i个 顶点 的权值分析每一条边 e(i,j) 要么是被顶点i覆盖,那么是被顶点j覆盖,或是同时被覆盖,所以我原创 2014-05-21 15:54:38 · 1161 阅读 · 0 评论 -
Paxos 个人理解
Paxos算法中主要的角色有:Client:发起请求的人Acceptor (Voters):负责选举头头片Proposer:负责向Acceptor发起Clinet的提议Learner:当提议决定的以后,需要有所行动的人Leader:选举出来的做决策的Leaderbasic Paxos站在Proposer的角度Prepare阶段: 1) 向Acceptors发送 【prepare请求原创 2016-09-06 21:59:19 · 314 阅读 · 0 评论