c++ - 堆中的最大重量

标签 c++

<分区>

我正在尝试使用此函数计算堆中的最大重量:

unsigned int left(unsigned int x)
{return 2*x+1;}

unsigned int right(unsigned int x)
{return 2*x+2;}

unsigned int max_way (unsigned int* feld, int x, int max_size)
{
    if (x > max_size) 
        return 0;
    else 
        return feld[x] + std::max(max_way(feld, left(x), max_size), max_way(feld, right(x), max_size));
}

所以我用一个小例子来尝试一下:

unsigned int feld[] = {3,7,4,2,4,6,8,5,9,3};

std::cout << max_way(feld, 0, 10);

结果是134514494,有点大了!

有什么想法吗?

最佳答案

if (x > max_size) 

应该是

if (x >= max_size)

C++ 数组从 0 .. max-1 开始。

关于c++ - 堆中的最大重量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144951/

相关文章:

javascript - 在 C++ 的 JScript 中调用 instanceof 运算符 (IDispatch/IDispatchEx)

c++ - 与 C++ 共享 Julia 对象的最有效方法是什么?

c++ - FatFS - 无法格式化驱动器,FR_MKFS_ABORTED

c++ - 是否可以读取 Linux C++ 中的 udp 套接字缓冲区中缓冲了多少字节?

c++ - 复制构造函数中的深层复制问题

c++ - 我如何分析纯dll?

java - 使用 FFMpeg 将 BGR BufferedImage 快速转换为 YUV

以 Vector 对象为成员的 C++ Sprite 类

c++ - 传递和返回引用

c++ - 成员函数 'select' 的“this”参数具有类型 'const SelectParam' ,但函数未标记为 const