算法艺术
文章平均质量分 74
马客斯
这个作者很懒,什么都没留下…
展开
-
约瑟夫问题
假设当前剩下i个人(i0 , 1 , 2 , 3 ... m , m + 1 ... i-1, i-m , i-m+1 , i-m+2 , i-m+3 ... 0 , 1 .... i-1-m (转换之后)如果第二行中剩下的人是s原创 2008-08-24 23:42:00 · 1020 阅读 · 0 评论 -
C++ hash_map 与 Java HashMap 的区别
与Java中的HashMap比起来, C++ STL 中hash_map的实现并不是很完美。原因在于一些小的细节:1. Hash表的增长方式: hash_map: 当元素数量element_NUM超过桶的数量bucket_NUM 时,确定一个新的桶数量N。N是质数,它是从一个质数表中选择出来的,它必须大于等于元素数量element_NUM。质数表中的质数是从小到大排列的,基本上后一原创 2011-10-26 17:27:37 · 7845 阅读 · 0 评论 -
取石子游戏
“抢30”是我国民间的一个两人游戏,具有很强的对抗性和娱乐性。抢30游戏通常有两种玩法。(1)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,谁先报到30,谁就为胜方。(2)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,同时把两个人报出的所有数累加,谁先使这个累加数最先达到30,谁就为胜方。解决最个问题的一般策略是用倒推法。以(1)为例,要抢到30,必须抢到27;转载 2008-08-25 22:41:00 · 3041 阅读 · 0 评论 -
查找出现次数大于n/k的重复元素 ---非多重集算法
本文是对一篇英文论文的总结:Finding Repeated Elements。想看原文,请Google之。这个问题的简单形式是“查找出现次数大于n/2的重复元素”。我们先从简单问题开始,然后再做扩展。1.查找出现次数大于n/2的重复元素 《编程之美》中有同样的一道题《寻找发帖水王》,具体思路是每次删除两个不同的元素,最后剩下的就是要求的元素。这个结论的证明如下: 已知:n,m原创 2011-12-04 10:07:44 · 3615 阅读 · 1 评论 -
Floyd算法
(参考NKOJ1039 Arbitrage)定义Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。核心思路通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[a(i,j)]n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(转载 2008-08-21 19:22:00 · 874 阅读 · 0 评论