
算法题
Kaiwii
单调,简单
展开
-
数位全排列算法(可重复)之求和:非递归求法
问题描述:任意给定一个5位以内的整数(其中这个数字各个数位都不含有0,但是允许数位上的数字重复),然后对这个数字的各个数位的数字任意颠倒,成为新的数字组合,然后对这个组合里面的数字进行求和。举个例子说明一下:假如给定数字123,那么组合里面的数字可以是,132,213,231,312,321,123再例如,233,那么组合里面的数字就可以是,233,323,332再例如,222,那原创 2012-03-22 16:44:31 · 4401 阅读 · 0 评论 -
Diffie-Hellman算法(密钥)
离散对数公钥密码体制的简要过程:传送人Alice、Bob两人首先协商确定使用有限域Zp,即确定p为多少。本例为p=2579,域中本原元是α=2;假如现在Alice要发送信息x=1299给Bob:1、首先Bob选择随机数a=765做为自己的私钥,通过私钥计算β=2765mod 2579=949,Bob公开他的公钥949给Alice。2、Alice选择随机数K=853做为自己的私钥转载 2012-06-09 09:43:22 · 1567 阅读 · 0 评论 -
Diffie-Hellman算法
离散对数公钥密码体制的简要过程:传送人Alice、Bob两人首先协商确定使用有限域Zp,即确定p为多少。本例为p=2579,域中本原元是α=2;假如现在Alice要发送信息x=1299给Bob:1、首先Bob选择随机数a=765做为自己的私钥,通过私钥计算β=2765mod 2579=949,Bob公开他的公钥949给Alice。2、Alice选择随机数K=853做为自己的私钥转载 2012-06-09 09:37:59 · 2684 阅读 · 0 评论 -
快速排序Java实现
第一、算法原理针对数组中的一个数(这个数叫做pivot),将这个数组划分成两个部分:左边的每个元素都比pivot小;右边的每个元素都比pivot大。然后,再分别在左右两个部分递归地进行这种划分的操作。如此说比较笼统,在这个大方向上实际上是隐含着两个重要的地方:1、如何确定pivot2、如何划分至于如何确定pivot这点先默认认为是取数组中的第一个元素,在下文将会针对取pivot原创 2012-09-20 18:55:15 · 1457 阅读 · 0 评论 -
解题笔记(37)——Catalan数计算及应用
问题描述:卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。输入一个整数n,计算h(n)。其递归式如下:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2,h(0) = h(1) = 1) 该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...) 思路:直接根据递归式,转载 2012-09-25 16:22:24 · 971 阅读 · 0 评论 -
拓扑排序
拓扑排序是对有向无环图的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环,则无法表示两个顶点的先后顺序。在现实生活中,也会有不少应用例子,比如学校课程布置图,要先修完一些基础课,才可以继续修专业课。一个简单的求拓扑排序的算法:首先要找到任意入度为0的一个顶点,删除它及所有相邻的边,再找入度为0的顶点,以此类推,直到删除所有顶点。顶点的删除顺序即为拓扑排序。 很容转载 2012-09-25 16:42:42 · 867 阅读 · 0 评论 -
移位运算(部分笔试题)
一、x=a/2;等价于x=a>>1;右移则幂次变小 x=a*2;等价于x=a乘法和移位运算谁更快?按道理来说移位更快,但是现在的编译器都对这个做优化了。 扩展:x*=16,也就是左移4位!x二、分段(2段,left&right,初始时 left = 0,right = n-1,center = (left+right)/2):1、奇数,如1,2,3.=>(left,ce转载 2012-10-31 10:15:43 · 1252 阅读 · 0 评论