小编Nik*_*nka的帖子

生成树的最小瓶颈与最小生成树有何不同?

加权图的最小瓶颈生成树ģ是生成树ģ使得在生成树任何边的最大重量最小化.MBST不一定是MST(最小生成树).

请举例说明这些陈述是否有意义.

algorithm graph minimum-spanning-tree spanning-tree

32
推荐指数
2
解决办法
2万
查看次数

计算n的值选择k

评估n选择k值的最有效方法是什么?我认为蛮力方式是找到n阶乘/ k阶乘/(nk)阶乘.

更好的策略可能是根据这个递归公式使用dp .有没有其他更好的方法来评估n选择k?

language-agnostic algorithm combinations

32
推荐指数
4
解决办法
5万
查看次数

Java:HashMap大小的"素数"或"2的幂"?

许多书籍和教程都说哈希表的大小必须是在所有桶中均匀分配密钥的主要原因.但Java HashMap总是使用两个幂的大小.不应该使用素数吗?哈希表大小更好,"素数"或"两个幂"?

java hash hashtable hashmap hashcode

26
推荐指数
3
解决办法
5328
查看次数

BIT:使用二进制索引树?

与其他数据结构相比,二进制索引树具有非常少或相对没有理论可供研究.顶级编码器教程是唯一能够简洁教授它的地方.虽然教程在所有解释中都是完整的,但我无法理解这种树背后的直觉是什么?以及如何证明它的正确性?

我认为证明是复杂的解释.那么在使用BIT时,您遵循什么方法?

language-agnostic algorithm tree

25
推荐指数
1
解决办法
1万
查看次数

填充2背包的最佳方式?

在一个背包的情况下,用于最佳地填充背包的动态编程算法很好地工作.但是,是否有一种有效的已知算法可以最佳地填充2个背包(容量可能不相等)?

我尝试了以下两种方法,但它们都不正确.

  1. 首先使用原始DP算法填充第一个背包,填充一个背包,然后填充另一个背包.
  2. 首先填充尺寸为W1 + W2的背包,然后将溶液分成两个溶液(其中W1和W2是两个背包的容量).

问题陈述(另见维基百科的背包问题):

  1. 我们必须用一组物品(每个物品具有重量和值)填充背包,以便最大化我们可以从物品获得的值,同时总重量小于或等于背包尺寸.

  2. 我们不能多次使用一个项目.

  3. 我们不能使用项目的一部分.我们不能把一个项目的一小部分.(每个项目必须完全包含或不包括在内).

algorithm knapsack-problem dynamic-programming graph-algorithm

17
推荐指数
1
解决办法
1万
查看次数

BigInteger使用多少空间?

BigInteger对象一般使用多少字节的内存?

java biginteger

16
推荐指数
2
解决办法
1万
查看次数

如何在代码块中缩进我的代码?

什么是最好的代码块快捷方式?还有一些方法可以直接缩进我们的所有代码吗?另外,我们如何在代码块中移动活动选项卡?

codeblocks

13
推荐指数
3
解决办法
5万
查看次数

C hack用于存储占用1位空间的位?

我在0到67600之间有一长串数字.现在我想使用长度为67600个元素的数组存储它们.如果数字在集合中,则元素设置为1;如果数字不在集合中,则设置为0.即.每次我只需要1bit信息来存储一个数字.C/C++中是否存在帮助我实现这一目标的黑客攻击?

c c++ arrays binary bit-manipulation

12
推荐指数
3
解决办法
3164
查看次数

O(n)最坏情况时间的2D峰值发现算法?

我在做从MIT算法课程.在第一堂课中,教授提出了以下问题: -

2D阵列中的峰值是使得它的4个邻居都小于或等于它的值,即.对于

a[i][j] 成为当地最大值,

a[i+1][j] <= a[i][j] 
&& a[i-1][j] <= a[i][j]
&& a[i][j+1] <= a[i][j]
&& a[i+1][j-1] <= a[i][j]
Run Code Online (Sandbox Code Playgroud)

现在给定一个NxN 2D阵列,在阵列中找到一个峰值.

O(N^2)通过迭代所有元素并返回峰值,可以很容易地及时解决这个问题.

然而,它可以优化要解决O(NlogN)通过使用分而治之的解决方案为解释时间在这里.

但是他们说有一种O(N)时间算法可以解决这个问题.请建议我们如何及时解决这个问题O(N).

PS(对于那些了解python的人)课程工作人员在这里解释了一种方法(问题1-5.峰值证明),并在他们的问题集中提供了一些python代码.但解释的方法完全不明显,很难破译.python代码同样令人困惑.所以我已经为那些了解python的人复制了下面代码的主要部分,并且可以从代码中分辨出正在使用的算法.

def algorithm4(problem, bestSeen = None, rowSplit = True, trace = None):
    # if it's empty, we're done 
    if problem.numRow <= 0 or problem.numCol <= 0:
        return None

    subproblems = []
    divider = []

    if rowSplit:
        # the recursive subproblem …
Run Code Online (Sandbox Code Playgroud)

language-agnostic arrays algorithm multidimensional-array data-structures

12
推荐指数
1
解决办法
1万
查看次数

在char指针中输入字符串

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
    char *s;
    printf("enter the string : ");
    scanf("%s", s);
    printf("you entered %s\n", s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我提供长度不超过17个字符的小输入时(例如"aaaaaaaaaaaaaaa"),程序工作得非常好,但是在提供更大长度的输入时,它会给我一个运行时错误,说"main.c已经意外停止工作".

我的编译器(代码块)或我的电脑(Windows 7)有问题吗?或者它是否与C的输入缓冲区有关?

c

11
推荐指数
2
解决办法
4万
查看次数