堆中的最大权重

时间:2011-11-16 00:08:12

标签: 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.这有点大!

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

if (x > max_size) 

应该是

if (x >= max_size)

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

答案 1 :(得分:0)

您可以尝试白衣

if(x >= max_size)