Tag: 算法

找出特定整数有多少二进制数字

可能重复: 计算快速基数2天花板 在C / C ++中将特定整数从十进制转换为二进制时,找出特定整数有多少二进制数字的最快方法是什么? 防爆。 47 (10) = 101111 (2) 所以47有六位数以二进制表示。

任何更好的方式来实现这个

当我遇到这个算法(进行更改)并在下面实现它时,我正在网上冲浪…但仍然有任何有效的方法来做到这一点……我怎样才能从我执行的程序中找到相同的复杂性… 1>算法如下 makechange(c[],n) //c will contain the coins which we can take as our soln choice and ‘n’ is the amount we want change for soln<-NULL//set that will hold solution sum=0 while(sum!=n) { x<-largest item in c such that sum+x<=n if(there is no such item) return not found soln here is what i have tried […]

C:确定UTF-8字符串中UTF-16字符串需要多少字节的最有效方法

我已经看到一些非常聪明的代码用于在Unicode代码点和UTF-8之间进行转换,所以我想知道是否有人(或者会喜欢设计)这个。 给定UTF-8字符串,相同字符串的UTF-16编码需要多少字节。 假设UTF-8字符串已经过validation。 它没有BOM,没有超长序列,没有无效序列,是以空值终止的。 它不是CESU-8 。 必须支持带代理的完整UTF-16。 具体来说,我想知道是否有快捷方式可以在不完全将UTF-8序列转换为代码点的情况下知道何时需要代理对。 我见过的最好的UTF-8代码点代码使用了矢量化技术,所以我想知道这是否也可以。

调车场算法能解析POSIX正则表达式吗?

乍一看, 分流码算法似乎适用于POSIX正则表达式解析,但由于我在编写解析器方面没有太多经验(或理论背景),我想在跳入并写入内容之前先询问SO半途而废。 也许这个问题的一个更复杂的版本是:对于分流码算法可以应用的问题类别的正式陈述是什么? 澄清:这个问题是关于您是否可以使用分流算法的基本原理将POSIX语法解析为抽象语法树,而不是您是否可以使用正则表达式来实现分流算法。 对不起我说不清楚开头!

模拟PhotoShop的“颜色范围”算法

我正在尝试用在服务器上完成的自动化过程替换在PhotoShop中完成的手动过程。 目前在PhotoShop中,“颜色范围”工具用于使用“模糊”因子选择一系列颜色,并根据过程的部分从黑色或白色开始。 我的初始方法包括在L * a * b颜色空间中使用发光阈值以及候选颜色和黑/白之间的DE94。 在这两种情况下,我都选择了不应该选择的颜色和/或没有选择应该选择的颜色。 我的预感是我应该使用锥体而不是球体来进行选择。 任何人都可以了解PhotoShop正在做什么以及我是否正朝着正确的方向前进? 另外,如果有一个库可以做到这一点很棒我现在用C写的。

用于查找两首或更多首歌曲的交集的算法

让我们说我们有一堆收音机,每个收音机一遍又一遍地播放同一首歌。 是否可以同步所有收音机中的所有歌曲? 我们能找到一个从一开始就听到所有歌曲的时间吗? 为简单起见,我们会说我们只有两个无线电。 我有以下公式: c和z表示以秒为单位的歌曲长度。 a和x表示歌曲中的当前位置(以秒为单位)S表示C和Z同步的时间。 (当两首歌同时开始时) 例如 : Song 1 a = 17 : the time before the song ends. b = 8 : the rest of the song. c = a + b which is the full song in seconds. And Song 2 x = 8 : the time before the song […]

并行化Fibonacci序列生成器

我正在学习并行化,在一个练习中,我给出了一些我应该提高性能的算法。 其中一个是Fibonacci序列生成器: array[0] = 0; array[1] = 1; for (q = 2; q < MAX; q++) { array[q] = array[q−1] + array[q−2]; } 我怀疑这是不能优化的(通过并行化),因为每个数字都取决于前两个数字(因此间接地依赖于所有前面的数字)。 怎么可以并行化呢?

有效地计算(a-K)/(a + K)并提高精度

在各种情况下,例如对于数学函数的参数减少,需要计算(a – K) / (a + K) ,其中a是正变量参数而K是常数。 在许多情况下, K是2的幂,这是与我的工作相关的用例。 我正在寻找比直接划分更准确地计算这个商的有效方法。 可以假设对融合乘法 – 加法(FMA)的硬件支持,因为此操作由此时所有主要CPU和GPU架构提供,并且可通过函数fma()和fmaf()以C / C ++forms提供。 为了便于探索,我正在尝试float运算。 由于我计划将方法移植到double算法,因此不能使用高于参数和结果的本机精度的操作。 到目前为止我的最佳解决方案是 /* Compute q = (a – K) / (a + K) with improved accuracy. Variant 1 */ m = a – K; p = a + K; r = 1.0f / p; q = m […]

Payne Hanek算法在C中的实现

我正在努力理解如何实现Payne和Hanek发布的范围缩减算法(三角函数的范围缩减) 我见过这个库: http : //www.netlib.org/fdlibm/ 但它看起来如此扭曲,我所创立的所有理论解释都太简单了,无法提供实现。 有一些好的……好的……好的解释吗?

深层复制Linkedlist而不破坏原始列表和额外的存储空间(使用ANSI C)

这个链表与普通链表不同的是,除了下一个指针外,它还有另一个指针,指向链表中除了它自己之外的另一个节点。 那么深刻复制这个链表没有破坏原始而没有额外空间的最佳方法是什么? 我的方法只是做一个O(n ^ 2)循环,但应该是一些更聪明的方法。