
算法
lsldd
这个作者很懒,什么都没留下…
展开
-
约瑟夫问题的一种O(n)数学处理方法
对于约瑟夫问题,今天看到了一篇好帖子,是用数学方法处理的,感觉还不错的 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂 度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。 为了讨论方便,先把问题稍微改变一下,并不影响原意: 问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,转载 2010-04-20 14:42:00 · 2168 阅读 · 0 评论 -
第二类Stirling
在五类典型的递推关系中,第二类Stirling是最不为大家所熟悉的。也正因为如此,我们有必要先解释一下什么是第二类Strling数。【定义2】n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数用S(n,m)表示,称为第二类Stirling数。下面就让我们根据定义3来推导带两个参数的递推关系——第二类Stirling数。解:设有n个不同的球,分别用b1,b2,……bn表示。转载 2010-04-29 18:43:00 · 1852 阅读 · 0 评论 -
N阶幻方入门算法及图解
幻方(Magic Square)1是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。 幻方有3种不同解法,分别对应于奇数阶, 4*m阶,以及4*m+2阶。 注:部分代码来源网络2奇数阶幻方解法《射雕英雄传》中,英姑对黄蓉说:“你算法自然精我百倍,可是我问你:将一至九这九个数字排成三列,不论纵横斜角,每三个字相加都是十五,如何排列?” 黄蓉当下低声诵道:“九原创 2017-03-05 19:20:48 · 11017 阅读 · 4 评论 -
面试题:快速计算1亿内所有整数的最大奇因数和
求1到n(n为1亿)内所有整数的最大最大奇因数和原创 2016-09-17 19:11:02 · 3229 阅读 · 0 评论 -
模拟退火算法解旅行商(TSP)问题
该帖子的代码主要转自[模拟退火算法]1 该文对模拟退火算法作了较好的分析,不过该文中举例的TSP的代码有一些问题,我对此作了修正,并在文中最后做出解释。 代码如下:#include <iostream>#include <string.h>#include <stdlib.h>#include <algorithm>#include <stdio.h>#include <time.h>原创 2015-12-18 17:04:19 · 9204 阅读 · 5 评论 -
一个有限状态机判断字符串是否数字的例子
这几天看到有朋友在讨论这样的问题,如何快速匹给定的字符串原创 2014-09-04 16:15:15 · 5123 阅读 · 5 评论 -
WGS84坐标与Web墨卡托坐标互转
在WebGIS的开发中经常用到的地图投影为Web墨卡托和WGS84,故歌地图,bingmaps,百度地图,mapabc,mapbar,以及ArcGIS online上的大部分地图为Web墨卡托地图,ArcGIS online上最开始发布的地图投影为WGS84。在开发过程中很多时候会遇到不同坐标系之间互转的问题,特别是底图使用Web墨卡托,定位(GPS,wifi等)信号坐标为WGS84坐标的时候转载 2012-10-21 16:12:08 · 12478 阅读 · 5 评论 -
快速幂取模算法
参考文章来源:Reait Home(http://www.reait.com/blog.html) 转载请注明,谢谢合作。 在Miller Rabbin测试素数,就用到了快速幂取模的思想。这里总结下。求a^b%c(这就是著名的RSA公钥的加密方法),当a,b很大时,直接求解这个问题不太可能 算法1:利用公式a*b%c=((a%c)*b)%c,这样每一步转载 2010-04-20 14:46:00 · 39742 阅读 · 10 评论 -
直线与三角形相交
bool GeometricTools::intersect(Vector3f ray_o, Vector3f ray_d, Vector3f tri_p0, Vector3f tri_p1, Vector3f tri_p2, Vector3f& res){ flo原创 2012-03-07 20:02:28 · 1731 阅读 · 0 评论 -
不用任何比较运算,返回2个数中的最大数
今天又遇到了这个问题,查了下解决方案很多,大体分为如下几种:1.折腾加减乘除运算int Max(int a, int b){ int min = (a + b) / 2 - abs((a - b) / 2); int max = (a + b) /原创 2011-09-14 19:48:27 · 1569 阅读 · 0 评论 -
8分钟写出代码的华为面试题?不要被标题迷惑!
在程序员的江湖中,有一个流传了很久的故事,那就是: 华为面试题(8分钟写出代码): 有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小 华为面试题(8分钟写出代码) (注意发帖时间:2006年)可怜一个“8分钟”,让无数程序员在8小时、8天、8周、甚至8年仍然未找出满意的答案而掉入了自卑的漩涡无法自拔!这道题根本原创 2017-09-15 14:42:21 · 3952 阅读 · 1 评论