TEMA
TLE - ajuda :)
welton4 preguntado 4 years ago
Alguém tem ideias de otimização?
`// na main: string letra = "....................";``
int busca(vector< vector<char> > parque, vector< vector<bool> > path, string letra, int n, int i, int j, int peso){
if(i<0||j<0||i>=n||j>=n) return INT_MAX;// passei dos limites
if(path[i][j]) return INT_MAX;// esse no já está no caminho
/*verificar se esse caminho é possivel*/
for (int k = 0; k < L; ++k)
{
if(letra[k]=='.'){//ainda não existe letra registrada, se chegou aqui pode adicionar e break
//adicionar letra oposta como nao permitida
letra[k] = npermitida(parque[i][j]); //inclui um char nao permitido
break;
}else{
if(parque[i][j]==letra[k]){
//não pode passar
return INT_MAX;
}
}
}
/*se esse caminho é possivel incluir ele e procurar proximo passo*/
if((i==(n-1))&&(i==j)){
return (peso+1);// cheguei no final
}
path[i][j]=true;
int esq,dir,cima,baixo, peso_atual=peso+1;
esq = busca(parque,path,letra,n,i,j-1,peso_atual);
dir = busca(parque,path,letra,n,i,j+1,peso_atual);
cima = busca(parque,path,letra,n,i-1,j,peso_atual);
baixo = busca(parque,path,letra,n,i+1,j,peso_atual);
if(esq==dir&&dir==cima&&cima==baixo&&(baixo==INT_MAX)){// todos resultaram em algo impossivel
return INT_MAX;
}
if(esq<dir&&esq<cima&&esq<baixo){
return esq;
}else if(dir<esq&&dir<cima&&dir<baixo){
return dir;
}else if(cima<esq&&dir>cima&&cima<baixo){
return cima;
}else{
return baixo;
}
}
Este tema aún no ha sido contestado. ¡Sé el primero!