Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. #include "guloso.h"
  2.  
  3. Guloso::Guloso() {
  4. }
  5.  
  6. void Guloso::start(vector<Atividade> atv){
  7. a = atv;
  8.  
  9. sort(a.begin(), a.end(), comp);
  10.  
  11. s.push_back(a.at(0));
  12.  
  13. resolveAtividades(1);
  14.  
  15. }
  16.  
  17. void Guloso::set(vector<Atividade> a, vector<Atividade> s){
  18. this->a = a;
  19. this->s = s;
  20. }
  21.  
  22. int Guloso::resolveAtividades(int atual){
  23. //cout << "AQUI" << endl;
  24. int i = 0;
  25. cout << "atual: " << atual << endl;
  26. cout << "a.size: " << a.size() << endl;
  27.  
  28. // condicao de parada da recursao, chegou na ultima atividade
  29. if (atual == a.size()){
  30. return 0;
  31. }
  32.  
  33. /*Localiza a atividade com menor hora de inicio em relação a hora de termino
  34. da atividade anterior
  35. */
  36.  
  37. i = pSequencial(atual+1, a.at(atual).fim);
  38.  
  39. /*Insere a atividade na lista de soluções, caso ela seja encontrada no vetor de
  40. atividades
  41. ERRO - Insere a ultima ativiade de qualquer jeito. Consertado_OK
  42. */
  43.  
  44. /*Caso a variável <i> seja igual ou maior que o tamanho do vetor de atividades, significa
  45. que a última posição não faz parte da solução e o <i> retorna assim: i = s.size(),
  46. do contrário o valor retornado seria i = s.size()-1 */
  47. if(i < s.size()){
  48. s.push_back(a.at(i));
  49. }
  50.  
  51. /*Chama a resolução para uma instância menor. A variável i indica o início da próximam
  52. pSequencial
  53. */
  54. resolveAtividades(i);
  55. return 1;
  56. }
  57.  
  58. int Guloso::pSequencial(int atual, int hFimAtual){
  59. //cout << "AQUI2" << endl;
  60.  
  61. /*
  62. Procura atividade com tempo de inicio maior que o tempo de termino da atividade
  63. anterior
  64. */
  65. cout << atual << endl;
  66. while(atual < a.size()){
  67. if(hFimAtual <= a.at(atual).inicio){
  68. return atual;
  69. }
  70. atual++;
  71. }
  72. /*
  73. Retorna a posição da atividade com hora de inicio maior ou igual a hora de termino
  74. da atividade anterior
  75. */
  76. return atual;
  77. }
  78.  
  79. void Guloso::imprime(){
  80. this->imprimeSolucao();
  81. }
  82.  
  83. Guloso::~Guloso() {
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement