Tag: 算法

计算成本

是否有人知道这两段代码的计算成本是多少? while (n > 2) n = sqrt(n); while (n > 2) n = log(n);

如何在C中实现连续分数的自然对数?

我有一点问题。 从这个公式创建一些东西: 这就是我所拥有的,但它不起作用。 Franky,我真的不明白它应该如何工作..我试着用一些不好的指令来编写代码。 N是迭代次数和分数的一部分。 我认为它以某种方式导致递归,但不知道如何。 谢谢你的帮助。 double contFragLog(double z, int n) { double cf = 2 * z; double a, b; for(int i = n; i >= 1; i–) { a = sq(i – 2) * sq(z); b = i + i – 2; cf = a / (b – cf); } return (1 […]

生成唯一值

我想创建一个C程序来生成0到999999之间的数字,请记住生成的数字不应该包含任何重复的数字。 例如, “123”是可接受的值,但不是”121″因为重复’1′ 。 我已经找到了其他程序代码来检查整数是否有重复的数字: 检查整数是否有重复数字。 没有字符串方法或数组 检查数字重复数字的最快方法是什么? 然而,如果我要对1,000,000个不同的值进行检查,这些并不能真正解决我的问题并且它们是非常低效的解决方案。 此外,提供的解决方案是int而不是char[]和char * ,我在我的程序中使用它。 以下是我的代码。 正如您所看到的,我处理高达”012″值没有问题,但是3位及以上值的可能性太多而无法列出,而且编码效率太低。 会感激一些帮助。 int i, j; char genNext[7] = “0”; printf(“%s\n”, genNext); // loop through to return next pass in sequence while (1) { for (i = 0; i < sizeof(genNext) / sizeof(char); i++) { if (genNext[i] == '9') { char * thisPass […]

论数独解决

有人可以帮我理解这个解决方案 : Initialize 2D array with 81 empty grids (nx = 9, ny = 9) Fill in some empty grid with the known values Make an original copy of the array Start from top left grid (nx = 0, ny = 0), check if grid is empty if (grid is empty) { assign the empty […]

递归地添加数字序列

嘿我试图用一点递归刷新我的想法。 我想添加从“开始”到“结束”的所有数字。 即如果开始是1,结束是5.那么答案将是1 + 2 + 3 + 4 + 5 = 15 到目前为止,我已经有了这个 int calc(int start, int end){ if(start > end) return total; else{ total = total + start; return sum1(start++, end); } } 它不起作用(我得到seg故障)。 我究竟做错了什么? 编辑:对不起,我在我的实际代码中使用相同的变量,当我写这个我最终作为开始/结束,他们忘记改变所有代码。

这段代码如何从任何基数阶乘法中找到尾随零的数量?

下面的代码完美无缺,但我希望有人向我解释它背后的数学。 基本上,它是如何工作的? #include #include /* atoi */ #define min(x, y) (((x) < (y)) ? (x) : (y)) int main(int argc, char* argv[]) { const int base = 16; int n,i,j,p,c,noz,k; n = 7; /* 7! = decimal 5040 or 0x13B0 – 1 trailing zero */ noz = n; j = base; /* Why do we […]

找到两个三位数字产品的最大回文问题

所以在Project Euler上, 问题4陈述如下: 回文数字读取两种方式相同。 由两个2位数字的乘积制成的最大回文是9009 = 91 99。 找到由两个3位数字的乘积制成的最大回文。 我尝试过以下方法: #include #include int check(int result) { char b[7]; sprintf(b, “%d”, result); if (b[0] == b[5] && b[1] == b[4] && b[2] == b[3]) { return 1; } else { return 0; } } int main () { int i; int g; int final; for (i […]

在C / C ++中生成2个限制之间的随机素数

是否有内置函数可以在C / C ++中的2个给定限制之间生成随机素数? 我想要一个可以生成100万到10亿之间随机素数的函数

在三维网格上有效地找到等成本点,并且点数成本最低

我有一个3d网格 ,其中网格上的每个点(x,y,z) 与 成本值相关联 。 任何点(x,y,z)的成本都不是事先知道的 。 要知道成本,我们需要进行一个非常昂贵的复杂查询。 我们对这个目标知道的一件事是, 所有三个维度的成本都是单调不减少的 。 现在给出成本C,我需要在表面上找到成本为C 的点(x,y,z) 。 这必须通过仅花费最低成本来完成。 如何解决我的问题? 当我在网上搜索时,我得到了与轮廓识别相关的技术,但是所有这些技术都假设所有点的成本都是预先知道的,比如Marching cubes方法等。在我的例子中,主要指标是成本计算的点数应该是最小的。 如果有人能够建议一种获得近似位置的方法,至少如果不准确的话会很有帮助。

计算设置的k位大于另一个整数x的最小整数?

我想计算设置恰好为k位的最小整数,即大于另一个整数x 。 例如,如果x = 1001010那么对于k=2 ,对于k=4 ,答案应该是1010000 ,答案应该是1001011 ,对于k=5 ,答案是1001111 我认为需要设置至少与整数x设置的最左位一样多的位,然后在x设置与下一个最左边设置位相邻的MSB侧位或者设置下一个最左边的设置位之间进行选择然后通过重复相同的过程来查看设置后面的位; 一直计算k中剩下的位数。 我不确定这是否是正确的方法。