Fórum algoritmo combinatorial recursivo #579332
24/03/2017
0
Saudações,
Preciso converter um algoritmo iterativo com parâmetros estáticos em um combiantorial com parâmetro dinâmico.
O exemplo é esse:
/*SAIDA
(0,4)(0,4)(0,4)
(0,4)(0,4)(0,5)
(0,4)(0,4)(0,6)
(0,4)(0,4)(1,4)
(0,4)(0,4)(1,5)
(0,4)(0,4)(1,6)
(0,4)(0,5)(0,4)
(0,4)(0,5)(0,5)
(0,4)(0,5)(0,6)
.......
*/
Estou tentando fazer um algoritmo recursivo com parametros pra este problema,
porque a solução combinatorial parece que é mais natural pra recursividade, a entrada pode variar,
por exemplo, combinação de 5 3 a 3, combinacao de 10 8 a 8, etc
porem não obtive sucesso ate agora. Alguém, pode ajudar com uma solução? Pode ser em c, c++ ou
qualquer linguagem parecida.
Obrigado.
Preciso converter um algoritmo iterativo com parâmetros estáticos em um combiantorial com parâmetro dinâmico.
O exemplo é esse:
public class UmParDeInteiros{
public int de;
public int ate;
public UmParDeInteiros(int i, int j){
this.de = i;
this.ate = j;
}
}
//em main()
ArrayList<UmParDeInteiros> UmArrayDeParDeInteiros;
//combinação a 3 em algoritmo iterativo parametros estaticos
for(int s1de=0; s1de<2; s1de++){//entrada
for(int s1ate=4; s1ate<7; s1ate++){//internos
UmArrayDeParDeInteiros.add(new UmParDeInteiros(s1de,s1ate));
for(int s2de=0; s2de<2; s2de++){//entrada
for(int s2ate=4; s2ate<7; s2ate++){//internos
UmArrayDeParDeInteiros.add(new UmParDeInteiros(s2de,s2ate));
for(int s3de=0; s3de<2; s3de++){//entrada
for(int s3ate=4; s3ate<7; s3ate++){//internos
UmArrayDeParDeInteiros.add(new UmParDeInteiros(s3de,s3ate));
for(UmParDeInteiros s:UmArrayDeParDeInteiros){
System.out.print("("+s.de+","+s.ate+")");
}
System.out.println();
UmArrayDeParDeInteiros.remove(UmArrayDeParDeInteiros.size()-1);
}
}
UmArrayDeParDeInteiros.remove(UmArrayDeParDeInteiros.size()-1);
}
}
CombLayerDeEntrada.remove(UmArrayDeParDeInteiros.size()-1);
}
}
/*SAIDA
(0,4)(0,4)(0,4)
(0,4)(0,4)(0,5)
(0,4)(0,4)(0,6)
(0,4)(0,4)(1,4)
(0,4)(0,4)(1,5)
(0,4)(0,4)(1,6)
(0,4)(0,5)(0,4)
(0,4)(0,5)(0,5)
(0,4)(0,5)(0,6)
.......
*/
//combinação a 2 em algoritmo iterativo parametros estaticos
for(int s1de=0; s1de<2; s1de++){//entrada
for(int s1ate=4; s1ate<7; s1ate++){//internos
UmArrayDeParDeInteiros.add(new UmParDeInteiros(s1de,s1ate));
for(int s2de=0; s2de<2; s2de++){//entrada
for(int s2ate=4; s2ate<4; s2ate++){//internos
UmArrayDeParDeInteiros.add(new UmParDeInteiros(s2de,s2ate));
for(UmParDeInteiros s:UmArrayDeParDeInteiros){
System.out.print("("+s.de+","+s.ate+")");
}
System.out.println();
UmArrayDeParDeInteiros.remove(UmArrayDeParDeInteiros.size()-1);
}
}
CombLayerDeEntrada.remove(UmArrayDeParDeInteiros.size()-1);
}
}
Estou tentando fazer um algoritmo recursivo com parametros pra este problema,
porque a solução combinatorial parece que é mais natural pra recursividade, a entrada pode variar,
por exemplo, combinação de 5 3 a 3, combinacao de 10 8 a 8, etc
porem não obtive sucesso ate agora. Alguém, pode ajudar com uma solução? Pode ser em c, c++ ou
qualquer linguagem parecida.
Obrigado.
Aquiles Braganca
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)