Ensemble disjoint

Contenu du snippet

Cette source traite la représentation des ensembles dijoints, elle contient les fonctionnalités de base:
construire , et fusionner;
Construire : on donne la taille de l'ensemble disjoint;
Fusion : on donne les deux éléments à fusionner.

La définition des ensembles disjoints sur wiki :
http://fr.wikipedia.org/wiki/Ensembles_disjoints

Source / Exemple :


/**

  • @autor Mahdi El Masaudi
  • @description
  • Représentation d'un ensemble disjoint
    • /
#include<vector> using namespace std; class EnsembleDisjoint{ private: int taille; vector<int> elements; bool construire(); public: EnsembleDisjoint(int); int ens(int); bool fusionner(int,int); }; /**
  • @param taille int : taille du elements
  • /
EnsembleDisjoint::EnsembleDisjoint(int taille){ (*this).taille=taille; elements.resize(taille); // changer la taille du vecteur construire(); } /**
  • @return bool : operation effectuée ou non
  • /
bool EnsembleDisjoint::construire(){ // rempli toutes les cases avec 0 elements.assign(taille,0); return true; } /**
  • @param e int
  • @return i l'ancètre de l'élément e
  • @description retourne l'ancètre d'un élément
  • /
int EnsembleDisjoint::ens(int e){ assert((e>0)&&(e<=taille)); int i=e; while(elements[i]>0) i=elements[i]; return i; } /**
  • @param int a
  • @param int b
  • @return true -> la fusion a eu lieu , sinon false
  • /
bool EnsembleDisjoint::fusionner(int a,int b){ if((a>0)&&(a<=taille)&&(b>0)&&(b<=taille)&&(a!=b)){ if(elements[a]==elements[b]){ elements[a]=elements[a-1]; elements[b]=a; }else if(elements[a]<elements[b]){ elements[b]=elements[a]; }else{ elements[a]=elements[b]; } }else{ return false; } return true; }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.