2009-11-24 4 views
0

Quel serait le meilleur algorithme pour le problème ci-dessous.Algorithme pour le problème vectoriel

Mettre en œuvre la méthode PrintFamilyTree() qui imprime le nom et la génération de l'arbre
sortie devrait ressembler à
Nom: Jan Generation: 0
Nom: Mike Generation: 1
Nom: Greg Generation: 2
nom: Carol: génération: 2
nom: Peter Generation: 3
nom: Marcia Generation: 3
nom: Bobby Generation: 1

class Human : public std::vector<Human *> 
{ 
public: 
Human(const std::string &name) : m_Name(name) {}; 
virtual void PrintFamilyTree(const short &generation = 0) const; 
protected: 
std::string m_Name; 
}; 

class Male: public Human 
{ 
public: 
Male(const std::string &name) : Human(name) {}; 
}; 

class Female: public Human 
{ 
public: 
Female(const std::string &name) : Human(name) {}; 
}; 

void main() 
{ 
Male m1("Mike"), m2("Greg"), m3("Peter"), m4("Bobby"); 
Female f1("Carol"), f2("Marcia"), f3("Jan"); 

m1.push_back(&m2); 
f1.push_back(&m3); 
f1.push_back(&f2); 
m1.push_back(&f1); 
f3.push_back(&m1); 
f3.push_back(&m4); 

f3.PrintFamilyTree(); 
} 
+2

On dirait que les devoirs? – Guge

+6

Vous ne devriez pas vraiment hériter des conteneurs STL ... –

+2

En note: Vous ne devriez pas dériver de conteneurs std (puisqu'ils n'ont pas dtors virtuel), à la place ... faire une classe d'adaptateur :) – Christian

Répondre

5
class Human : public std::vector<Human *> 

Pas une bonne idée - les conteneurs STL ne sont généralement pas conçus pour être dérivés. Pensez à l'endiguement plutôt qu'à l'héritage.

void main() 

main retourne un int. Toujours.

Cela ressemble à un problème simple. Pensez à une structure arborescente. Vous pouvez changer le conteneur que vous utilisez (c'est-à-dire vector) pour quelque chose de plus approprié.

Soyez averti, votre question ressemble beaucoup aux devoirs, donc il y aurait peu de réponses!

0
  1. Imprimer le nom et la génération de l'objet de départ
  2. Pour chaque objet enfant, imprimer leur nom et leur génération.
  3. Pour chaque objet enfant (la même liste des enfants que la ligne 2), imprimer leur arbre en commençant à la ligne 2 avec les enfants de l'objet enfant
1

Pour l'algorithme je pense une sorte topologiques conviendra, mais vous besoin d'un graphique pas un vecteur

Questions connexes