1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| include <cstdlib>
#include <iostream>
using namespace std;
#include "sacADos.h"
int main(int argc, char ** argv){
int a[10];
Noeud arbre[N_MAX_OBJETS];
SacADos sad;
int i;
int gainMaxFinal;
int code;
int indice;
int fils1;
int fils2;
int codex;
cout << "Nombre d'objets ";
cin >> sad.nbObjets;
cout << "Poids du sac ";
cin >> sad.poidsSac;
for(i = 0 ; i < sad.nbObjets; i++) {
cout << "poids de l'objet " << i+1 << " ";
cin >> sad.pd[i];
cout << "valeur calorifique de l'objet " << i+1 << " ";
cin >> sad.pc[i];
}
initialiserNoeudsVides (arbre, sad.nbObjets);
remplir1erNoeud(arbre, sad);
afficherNoeud(arbre, 0, sad.nbObjets);
separerNoeud(arbre, sad, 0);
afficherNoeud(arbre, 1, sad.nbObjets);
afficherNoeud(arbre, 2, sad.nbObjets);
arbre[1].etatFeuille = 0;
arbre[2].etatFeuille = 0;
while (code == 1) { // tant que toutes les feuiles sont vides
determinerIndice(arbre, fils2);
separerNoeud(arbre, sad, indice);
afficherNoeud(arbre, fils1, sad.nbObjets);
afficherNoeud(arbre, fils2, sad.nbObjets);
arbre[indice].etatFeuille = 1;
arbre[fils1].etatFeuille = 0;
arbre[fils2].etatFeuille = 0;
}
determinerIndice(arbre, sad.nbObjets);
gainMaxFinal = arbre[indice].gainMax;
cout << "Le gain final est : "<< gainMaxFinal;
cout << "Les objets mis dans le sac sont : " << endl;
for (i = 0; i < sad.nbObjets; i++){
if (arbre[indice].etatObjet[i] == 1){
cout << "n° : " << i+1 << endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
} |
Partager