小编Bob*_*ohn的帖子

红黑树和AVL树之间的区别

有人可以解释一下这两种数据结构之间的主要区别是什么吗?我一直试图在网上找到一个突出差异/相似之处的来源,但我没有找到任何太丰富的信息.在哪种情况下,一个人比另一个人更受欢迎?什么实际情况使一个"更好"使用比另一个?

language-agnostic tree avl-tree red-black-tree data-structures

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

外行人的复杂程度如何?

有人可以用非专业人的术语解释摊销的复杂性吗?我一直很难在网上找到一个精确的定义,我不知道它是如何与算法分析完全相关的.任何有用的东西,即使外部引用,都将受到高度赞赏.

algorithm amortized-analysis

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

dynamic_cast如何工作?

如果您有以下内容:

class Animal{};

class Bird : public Animal{};

class Dog : public Animal{};

class Penguin : public Bird{};

class Poodle : public Dog{};
Run Code Online (Sandbox Code Playgroud)

dynamic_cast只检查一个类是否是另一个类的派生类,或者一个类是否是另一个类的基类?所以,如果我有:

Bird* bird;
Animal* animal;

bird = dynamic_cast<Animal*>(bird);
animal = dynamic_cast<Bird*>(animal);
Run Code Online (Sandbox Code Playgroud)

bird现在指向一个Animal类,以便我可以使用bird->some_function();它将调用该函数Animal?而animal现在指向一Bird类,所以我可以做animal->some_function();,它会调用some_function();Bird

我一直试图弄清楚dynamic_cast我在网上找到的作品和资源是如何最有帮助的.如果有人能够提供其它功能的其他见解dynamic_cast以及某些有用的实例,我将非常感激.

c++ dynamic-cast dynamic

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

我们如何通过归纳证明二进制搜索是正确的?

我很难理解感应如何与一些不变量一起用来证明算法的正确性.也就是说,如何找到不变量,何时使用归纳假设 - 特别是二元搜索?我还没有找到直观的回复,所以我希望有人可以在这里阐述一下这个话题.

algorithm search proof binary-search

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

寻找主要因素

#include <iostream>
using namespace std;

void whosprime(long long x)
{
    bool imPrime = true;

    for(int i = 1; i <= x; i++)
    {
        for(int z = 2; z <= x; z++)
        {
            if((i != z) && (i%z == 0))
            {
                imPrime = false;
                break;
            }
        }

        if(imPrime && x%i == 0)
            cout << i << endl;

        imPrime = true;
    }    
}

int main()
{
    long long r = 600851475143LL;
    whosprime(r);  
}
Run Code Online (Sandbox Code Playgroud)

我试图 在项目Euler上找到问题3指定的数字600851475143的素因子(它要求最高的素因子,但我想找到所有这些因素).但是,当我尝试运行此程序时,我没有得到任何结果.这与我的程序花费多长时间,甚至数字本身有什么关系?

另外,有哪些更有效的方法可以解决这个问题,你有什么建议可以解决这些更优雅的解决方案,因为我正在解决这个问题吗?

一如既往,谢谢!

c++ primes prime-factoring factorization

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

为什么需要虚拟关键字?

换句话说,为什么编译器只是"知道"如果在派生类中更改了函数的定义,并且指向该派生类的动态分配内存的指针调用了更改的函数,那么该函数尤其应该被称为而不是基类?

在什么情况下,虚拟关键字不会对程序员有益?

c++ virtual

5
推荐指数
1
解决办法
640
查看次数

在有向图上执行DFS和BFS

假设我们有一个图表,例如:

图形

如果你想要一个从0到5的路径,如果我们在这个图上执行DFS和BFS,我们将以什么顺序访问节点(假设始终首先推送最低元素).我无法概念化算法如何适用于具有周期的图形,我希望有人可以概述每个图形的过程.

algorithm graph breadth-first-search depth-first-search

5
推荐指数
1
解决办法
9225
查看次数

直观地解释指针及其意义?

我很难理解指针,特别是函数指针,我希望有人可以给我一个关于它们究竟是什么以及它们应该如何在程序中使用的概述.C++中的代码块将特别受到重视.

谢谢.

c c++ pointers function-pointers indirection

4
推荐指数
1
解决办法
828
查看次数

有人可以解释以下加载和存储指令作为ARM ISA的一部分吗?

我刚刚开始学习ARM,我无法理解加载和存储指令的确切作用.

加载说明:

ldrsb
ldrb
ldrsh
ldrh
ldr
Run Code Online (Sandbox Code Playgroud)

店铺说明:

strb
strh
str
Run Code Online (Sandbox Code Playgroud)

签名或未签名的"加载半字"是什么意思?或者"加载字节"签名或未签名?有符号和无符号之间的区别是什么,以及某些加载/存储指令在哪些特定应用程序中可以使用?总而言之,我正在寻找直观的理解这些指令的作用,因为我仍然对它们如何工作以及它们的用途感到困惑.

assembly arm

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

试图让两个群众互相绕轨道......得到奇怪的错误

基本上,我创造了质量,给了他们一些速度和动量,我试图利用重力的力量使它们相互绕轨道运行(围绕它们的质心).

from visual import *

earth = sphere(radius = 100000000)
newPlanet = sphere(pos = (3.84403*10**8, 0, 0), radius = 10000000)

earth.velocity = vector(0, 100, 0)
newPlanet.velocity = vector(0, 100, 0)

earth.mass = 2*10**30
newPlanet.mass = 1*10**30

earth.p = vector(0, earth.mass*earth.velocity, 0)
newPlanet.p = vector(0, newPlanet.mass*newPlanet.velocity, 0)

dt = 1000
r = newPlanet.pos.x
T = 1.296*10**6
G = 6.673*10**-11

while 1:
    Fnet = G*((earth.mass*newPlanet.mass)/r**2)

    earth.p += Fnet*dt
    newPlanet.p += Fnet*dt

    earth.velocity += (earth.p/earth.mass)*dt
    newPlanet.velocity += (newPlanet.p/newPlanet.mass)*dt

    earth.pos += earth.velocity*dt
    newPlanet.pos += …
Run Code Online (Sandbox Code Playgroud)

python vpython

3
推荐指数
1
解决办法
1219
查看次数