Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  "Divide and conquer" comment pourai je faire dans ce cas la ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"Divide and conquer" comment pourai je faire dans ce cas la ...

n°695410
xiluoc
un pc pour les unirs ....
Posté le 08-04-2004 à 04:36:01  profilanswer
 

:hello: ,
j ai un vecteur d entiers exemple :
1 2 3 4 5 6
 
je dois suivre cette methode :
prendre le milieu , action (ici inserer l element dans un arbre binaire ordone)
 
puis prendre le milieu de la partie gauche , action
puis prendre le milieu de la partie droite , action
ect ....
 
voila ce que jai fait

Code :
  1. void truc() {
  2.    vector <int> v;
  3.    //je remplie le vecteur
  4.    //et j appelle _truc(....) pour faire le boulot par recurence.
  5.    _truc(v, 0, v.size()-1);
  6. }
  7. void _truc (vector <int> v, int debut, int fin) {
  8.    if (debut != fin) {
  9. int milieu = (debut + fin)/2;
  10. //exemple de 0 a 5 -> 2 qui corespond a 3  
  11. //dansle vecteur ,  c est bon.
  12. _truc(v, debut, milieu);
  13. // cest la que je coince, si j appelle la fonction pour
  14. // la partie gauche la partie droite ne sera jamais traite :/
  15. _truc(v, milieu+1, fin);
  16. }


une idee ?  :sweat:
 
edit : condition d arret


Message édité par xiluoc le 08-04-2004 à 06:23:16
mood
Publicité
Posté le 08-04-2004 à 04:36:01  profilanswer
 

n°695411
nraynaud
lol
Posté le 08-04-2004 à 04:52:12  profilanswer
 

xiluoc a écrit :

:hello: ,
j ai un vecteur d entiers exemple :
1 2 3 4 5 6
 
je dois suivre cette methode :
prendre le milieu , action (ici inserer l element dans un arbre binaire ordone)
 
puis prendre le milieu de la partie gauche , action
puis prendre le milieu de la partie droite , action
ect ....
 
voila ce que jai fait

Code :
  1. void truc() {
  2.    vector <int> v;
  3.    //je remplie le vecteur
  4.    //et j appelle _truc(....) pour faire le boulot par recurence.
  5.    _truc(v, 0, v.size()-1);
  6. }
  7. void _truc (vector <int> v, int debut, int fin) {
  8. int milieu = (debut + fin)/2;
  9. //exemple de 0 a 5 -> 2 qui corespond a 3  
  10. //dansle vecteur ,  c est bon.
  11. _truc(v, debut, milieu);
  12. // cest la que je coince, si j appelle la fonction pour
  13. // la partie gauche la partie droite ne sera jamais traite :/
  14. _truc(v, milieu+1, fin);
  15. }


une idee ?  :sweat:


oui, une fonction quand on l'appelle, elle retourne, et la suite du code de l'appelante est exécutée.


---------------
trainoo.com, c'est fini
n°695412
nraynaud
lol
Posté le 08-04-2004 à 04:54:08  profilanswer
 

per contre, c'est pas mal de mettre une condition d'arrêt de récursivité en début de fonction.


---------------
trainoo.com, c'est fini
n°695413
xiluoc
un pc pour les unirs ....
Posté le 08-04-2004 à 06:01:05  profilanswer
 

nraynaud a écrit :

per contre, c'est pas mal de mettre une condition d'arrêt de récursivité en début de fonction.


wewe jai oublier de mettre un truc genre begin = end tu stop
je pense utiliser un 3 ieme parametre bool, si c est vrai tu vas a gauche (puis bool= false)sinon tu vas a droite (puis bool=right)
je test ca

n°695414
xiluoc
un pc pour les unirs ....
Posté le 08-04-2004 à 06:41:53  profilanswer
 

c etait tout simple ...

Code :
  1. void btree::dividAndConquer( vector<int> v, int begin, int end)
  2. {
  3.     if (begin!=end) {
  4.         insert(v[(begin+end) /2]);
  5.         dividAndConquer(v, begin, (begin+end) /2);
  6.         dividAndConquer(v, ((begin+end) /2) +1, end);
  7.     }
  8. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  "Divide and conquer" comment pourai je faire dans ce cas la ...

 

Sujets relatifs
erreur 200 en pacal divide by 0 
Plus de sujets relatifs à : "Divide and conquer" comment pourai je faire dans ce cas la ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR