草庐IT

algorithm

全部标签

c++ - 如何编写一个快速函数来计算一个数的总除数?

我必须找到给定数字N的除数总数,其中可以大到10^14。我尝试计算最大为10^7的素数,然后使用素数的指数找到除数factors.However事实证明它太慢了,因为使用筛子找到素数需要0.03秒。如何在不计算素数的情况下更快地计算除数总数?请伪代码/很好解释的算法将不胜感激。 最佳答案 使用阿特金筛法找出所有小于10^7的素数。(其中有664,579个)http://en.wikipedia.org/wiki/Sieve_of_Atkin理想情况下,这应该在编译时完成。接下来计算质因数分解:intx;//thenumberyouw

c# - 从原始 ECG 信号中提取心率的算法

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。从原始ECG信号中提取心率的算法我有一个以BDF格式记录的原始ECG信号(也可以使其成为EDF或txt)。现在我必须对其进行离线分析并提取热耗率。是否有此类算法的任何C#或C++实现?或者至少是伪代码算法。我自己从头开始做的原因是我想把它整合到一个在线分析系统中。我找到了以下链接:低通滤波器:http://en.wikipedia.org/wiki/Low-pass_filter高通滤波器:ht

c++ - 如何找到网格中两个单元格之间路径中的最窄点

我正在为rts游戏编写机器人(在网格map上一个村庄对另一个村庄,还有可交叉的单元格-草地,森林-和不可交叉的单元格-水,山丘)。如何找到这两个单元格之间路径上的最窄点?对算法有什么建议吗?(我正在使用A*找到最近的路径,我想机器人决定在哪里放置塔(坚固的防御建筑),放置在最窄的点上,这样敌人就不能绕过-可能可以,取决于map,但不太可能). 最佳答案 一些想法。考虑一个(可能太多了)简化版本,其中X代表不可交叉的单元格,.代表crossable,A代表一个村庄,B代表另一个。XXXA.XXXXXXXX..XXXXXXX.....X

c++ - 通过增加元素的频率对数组进行排序

我想按频率递增的顺序对数组进行排序。例如,如果我有一个数组intarr[]={3,3,10,2,5,10,10,2,2,2};或另一个数组将包含以下序列:intarr[]={5,3,3,10,10,10,2,2,2,2};但是,我不能使用散列或映射——我只能使用数组。我想到的是使用快速排序算法对数组进行排序,扫描排序后的数组并在二维数组中执行计数,以便对于每个元素,都有一个与之关联的计数,然后按计数排序。如果两个计数相同,那么我只会先打印出具有较低值的那个。我在执行最后两个步骤时遇到问题。我不确定如何将计数“映射”到二维数组中的索引,也不确定如何按计数对二维数组进行排序。谁能帮帮我?谢

c++ - 寻找幂的算法,即 n^p

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。寻找n^p的算法是:unsignedlonglongpower(unsignedn,unsignedp){unsignedlonglongx=1,y=n;while(p>0){if(p&1)x*=y;y*=y;p>>=1;}returnx;}有人能解释一下这个算法背后的逻辑/数学吗?我知道它有效并针对一些测试用例(试运行)进行了计算。我的意思是它是如何工

c++ - 如何从给定数组打印最长递增子序列 (LIS)?

我可以通过普通函数和递归函数打印LIS的长度。但我想在C++中的给定数组中打印LIS子序列的索引。这是我查找LIS长度的函数:intlis(int*arr,intn){int*lis,i,j,max=0;lis=(int*)malloc(sizeof(int)*n);for(i=0;iarr[j]&&lis[i]此处array[10]={76234185910}此处LISLength=6我想打印数字的索引{234689}(它不是序列,它是数组索引,我想打印什么)数组中的序列索引[10] 最佳答案 在为每个索引计算完lis后,取一个等

c++ - 按公共(public)元素对列表进行分组

我正在寻找一种聪明/快速的C++算法,当它们包含公共(public)对象时,它允许我对多个对象列表进行分组。假设我有N个列表,每个列表包含与一个元素E关联的1..M个对象(O):[O1,O2]->E1[O3]->E2[O1,O4,O5]->E3[O2,O5]->E4[O3,O6]->E5我希望将它们重新排列成以下内容:[O1,O2,O4,O5]->[E1,E3,E4][O3,O6]->[E2,E5]结果将所有公共(public)对象与所有关联元素组合在一起。列表之间最终没有共享对象。 最佳答案 对于每个对象,计算哪些元素包含它。即0

c++ - 获取 glFrustum 的坐标

我刚开始阅读有关OpenGL的主题,特别是关于Viewing的内容满足我目前的需求。我正在尝试理解glFrustum以了解我在屏幕上绘制的对象的透视投影,据我所知,glFrustum会使较远的对象小于较近的对象。我在这里使用openFrameworks来绘制对象,例如Image/Box等,这是我正在尝试做的一个简短示例:openFrameworks绘制方法draw(){glMatrixMode(GL_PROJECTION);glLoadIdentity();glFrustum(-1.0,1.0,-1.0,1.0,3.0,500.0);glMatrixMode(GL_MODELVIEW)

c++ - 反转字符数组中单词的顺序

要注意的是特殊字符的位置(例如:'?'、','、''、'.')应该保持不变。所以对于输入字符串“HelloWorld,你好吗?”输出将是“youare,howWorldHello?”。现在对于没有特殊字符的字符串,O(n)算法是将每个单词反转,然后反转整个数组,但不考虑特殊字符。我想出的最佳算法如下。我们遍历数组并将每个单词压入堆栈顶部,然后将特殊字符放入队列中。稍后,我们同时从堆栈和队列中弹出元素,并将它们连接起来以形成所需的输出。是否有就地O(n)算法?如果没有,您能否建议一个没有额外空间的O(n^2)算法。还假设您不能使用任何字符串库函数。 最佳答案

c++ - C++ 中 STL::MAP 的内部实现

我想知道MAP在C++中如何可用,不是MultiMap只是简单的Map,在内部实现。我能想到的最好的是:对于Integer映射:可以使用平衡二叉搜索树。对于String映射:CompressedTrie或类似的东西可以使用。我真的很好奇,它是如何在STLMap中真正实现的。是使用了一些哈希函数还是与此完全不同的东西。 最佳答案 有序容器,包括std::map被实现为平衡二叉树(通常是RB树,但任何其他平衡树都符合要求)。对于此类问题,您需要的最重要的信息是容器中每个操作的复杂性要求,这是标准规定的。这也是最重要的答案,即只要满足复杂