Skip to content
Snippets Groups Projects
Commit 347c044b authored by Vytor Calixto's avatar Vytor Calixto :space_invader:
Browse files

Modifica razão da profundidade

parent fdd94843
No related branches found
No related tags found
1 merge request!2Altura
...@@ -17,7 +17,7 @@ Lista Joga(Grafo g, Lista grupo){ ...@@ -17,7 +17,7 @@ Lista Joga(Grafo g, Lista grupo){
int altura = calculaAltura(g, grupo); int altura = calculaAltura(g, grupo);
int naoConsumidos = tamanhoLista(g->vertices) - tamanhoLista(grupo); int naoConsumidos = tamanhoLista(g->vertices) - tamanhoLista(grupo);
int profundidade = (sqrt(max) * (sqrt(altura) / sqrt(min)) * (altura/sqrt(naoConsumidos))); int profundidade = (sqrt(max) * (sqrt(altura) / sqrt(min)) * 1); //(altura/sqrt(naoConsumidos)));
Lista filhos = filhosGrupo(grupo); Lista filhos = filhosGrupo(grupo);
...@@ -44,6 +44,10 @@ Lista Joga(Grafo g, Lista grupo){ ...@@ -44,6 +44,10 @@ Lista Joga(Grafo g, Lista grupo){
} else if((v->bonus) == (maior->bonus)) { } else if((v->bonus) == (maior->bonus)) {
if(v->peso > maior->peso) { if(v->peso > maior->peso) {
maior = v; maior = v;
} else if(v->peso == maior->peso) {
if(v->cor < maior->cor) {
maior = v;
}
} }
} }
} }
...@@ -146,7 +150,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { ...@@ -146,7 +150,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) {
Vertice filho = (Vertice) getConteudo(m); Vertice filho = (Vertice) getConteudo(m);
if((filho->altura > v->altura)) { if((filho->altura > v->altura)) {
int bonus = filho->peso + calculaBonusRec(filho, v, g, profundidade); int bonus = filho->peso + calculaBonusRec(filho, v, g, profundidade);
if(corEstaNaLista(grupo, filho->cor)) bonus += 100; if(corEstaNaLista(grupo, filho->cor)) bonus += 50;
v->bonus += bonus; v->bonus += bonus;
} }
} }
...@@ -169,7 +173,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { ...@@ -169,7 +173,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) {
v->bonus += 150; v->bonus += 150;
} }
} }
destroiLista(vFilhos, NULL); destroiLista(vFilhos, destroiVertice);
int menorDistancia = v->altura; int menorDistancia = v->altura;
for(No m = primeiroNoLista(g->vertices); m; m = getSucessorNo(m)) { for(No m = primeiroNoLista(g->vertices); m; m = getSucessorNo(m)) {
...@@ -180,7 +184,6 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { ...@@ -180,7 +184,6 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) {
if((w->altura < menorDistancia) || (menorDistancia == v->altura)) menorDistancia = w->altura; if((w->altura < menorDistancia) || (menorDistancia == v->altura)) menorDistancia = w->altura;
} }
} }
v->bonus += (menorDistancia - v->altura)^2;
for(No m = primeiroNoLista(v->pais); m; m = getSucessorNo(m)) { for(No m = primeiroNoLista(v->pais); m; m = getSucessorNo(m)) {
Vertice pai = (Vertice) getConteudo(m); Vertice pai = (Vertice) getConteudo(m);
...@@ -216,7 +219,6 @@ int calculaBonusRec(Vertice v, Vertice pai, Grafo g, int profundidade) { ...@@ -216,7 +219,6 @@ int calculaBonusRec(Vertice v, Vertice pai, Grafo g, int profundidade) {
Vertice filho = (Vertice) getConteudo(n); Vertice filho = (Vertice) getConteudo(n);
if((filho->altura > v->altura)) { if((filho->altura > v->altura)) {
int preBonus = filho->peso + calculaBonusRec(filho, v, g, profundidade-1); int preBonus = filho->peso + calculaBonusRec(filho, v, g, profundidade-1);
Lista fFilhos = agrupaCores(filho->filhos);
bonus += preBonus; bonus += preBonus;
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment