Je suis en train de calculer le poids maximal dans un tas avec cette fonction:poids Maximal dans un tas
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));
}
Je l'essayer avec un petit exemple:
unsigned int feld[] = {3,7,4,2,4,6,8,5,9,3};
std::cout << max_way(feld, 0, 10);
Le résultat est 134514494. C'est un peu gros!
Des idées?
Cela ne ressemble pas tas que j'ai jamais entendu parler. Est-ce que le résultat escompté 21? Parce que l'émulation dans ma tête donne 21. –
Regardé comme un tas pour moi. Voilà comment j'ai répondu à sa question. Un tas est une structure qui a la propriété de tas: si B est un nœud enfant de A, alors touche (A) ≥ touche (B). Ici, la clé est l'index. – drdwilcox