A voir également:
- Algo de Prim et Kruskal
- Prime de réparation - Accueil - Sauvegarde
- Comment se desabonner de amazon prime - Accueil - Applis & Sites
- Algo prono - Télécharger - Sport
- Amazon prim - Guide
- Algo du cheval - Forum Programmation
2 réponses
Si ça peut t'aider :
c'est en liberty BASIC, mais tu devrais pouvoir l'adapter sans probleme.
@++
c'est en liberty BASIC, mais tu devrais pouvoir l'adapter sans probleme.
'saisie des arbres input "combien y a t'il d' arbres ?";nbarbre dim arbre$(nbarbre,2) for i=1 to nbarbre print "entrez le nom de l' arbre N° ";i input nom$ arbre$(i,1)=nom$ next i 'saisie des arêtes input "combien y a t'il d'arêtes ?";nbarete dim segment$(nbarete,4) for i= 1 to nbarete print "segment N° ";i input "arbre de debut ";ad$ input "arbre de fin ";af$ input "poids ";poid$ print poid$=right$("0000000000"+trim$(poid$),10) segment$(i,1)=ad$ segment$(i,2)=af$ segment$(i,3)=poid$ next i 'tri des segments par ordre croissant de poid sort segment$(, 1, nbarete, 3 for u=1 to nbarete print segment$(u,1);"-";segment$(u,2);" ";segment$(u,3) next u segment$(1,4)="x" 'indique que le premier segment est retenu foret=2 nbgr=1 ad$=segment$(1,1) af$=segment$(1,2) poidS=val(segment$(1,3)) 'ajout des arbres du segment au groupe numero 1 s=0 for i=1 to nbarbre if ad$=arbre$(i,1) or af$=arbre$(i,1) then s=s+1:arbre$(i,2)="1" if s=2 then exit for next i 'analyse des segments for u=2 to nbarete ad$=segment$(u,1) af$=segment$(u,2) poids=val(segment$(u,3)) print "Je selectionne le segment ";ad$;"-";af$;" qui a un poid de ";poids s=0 'recherche des groupes de chaque arbre du segment for i=1 to nbarbre if ad$=arbre$(i,1) then s=s+1:grad=val(arbre$(i,2)) if af$=arbre$(i,1) then s=s+1:graf=val(arbre$(i,2)) if s=2 then exit for next i 'si les arbres ne sont dans aucun groupe on en cree un nouveau if grad+graf=0 then nbgr=nbgr+1 s=0 for i=1 to nbarbre if ad$=arbre$(i,1) or af$=arbre$(i,1) then s=s+1:arbre$(i,2))=str$(nbgr) if s=2 then exit for next i segment$(u,4)="x" print "creation du groupe d'arbre numero ";nbgr print "le segment est retenus." goto [suite] end if 'si un des deux arbres n'est pas dans un groupe on le met dans le même groupe que l'autre arbre du segment if grad*graf=0 then if grad then bgr=grad print "L'arbre ";af$;" à été ajouté au groupe ";bgr else bgr=graf print "L'arbre ";ad$;" à été ajouté au groupe ";bgr end if s=0 for i=1 to nbarbre if ad$=arbre$(i,1) or af$=arbre$(i,1) then s=s+1:arbre$(i,2))=str$(bgr) if s=2 then exit for next i segment$(u,4)="x" print "le segment est retenus." goto [suite] end if 'si les arbres sont dans le même groupe on ne retient pas le segment if grad=graf then print "ces arbres sont dans le groupes numero ";grad print "le segment ne sera pas retenus." goto [suite] end if 'si les deux arbres appartiennent à des groupes differents on regroupe les arbres des deux groupes. grm=min(grad, graf) grx=grad+graf-grm for i=1 to nbarbre if ad$=arbre$(i,1) or af$=arbre$(i,1) then arbre$(i,2))=str$(grm) else grr=val(arbre$(i,2)) if grr=grx then arbre$(i,2))=str$(grm) end if next i segment$(u,4)="x" print "regroupement des arbres des groupes numero ";grm;" et "; grx print "le segment est retenus." [suite] next u print print "Liste des segments retenus:" for u=1 to nbarete if segment$(u,4)="x" then print segment$(u,1);"-";segment$(u,2);" ";segment$(u,3) next u input "appuyez sur une touche pour quitter";r$ end
@++