<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
<br>Saludos a todos.<div><br></div><div>Utilizo Visual C++. Estoy trabajando en conseguir todas las posibles permutaciones en un vector de char de 5 posiciones; combinaciones donde importa el orden, que se usen todas las letras y que no se repita ninguna letra.</div><div><br></div><div>Por ejemplo, tengo este vector (de menor tamaño): {a,b,c} y quiero obtener cada posible orden de las letras. En este caso seria 3! = 6 permutaciones, que serian así:</div><div>{a,b,c}</div><div>{a,c,b}</div><div><div style="text-indent: 0px !important; ">{b,a,c}</div><div style="text-indent: 0px !important; ">{b,c,a}</div></div><div>{c,b,a}</div><div>{c,a,b}</div><div> </div><div><br></div><div>He hecho una funcion algo asi:</div><div>void funcionPermutacion(char v[])</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>while(v[0] != 'd') //cuando la primera posicion  del vector complete un ciclo</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>mostrarVector() //una funcion que muestra en pantalla los caracteres del vector</div><div><span class="Apple-tab-span" style="white-space:pre">              </span>v[2]++; //suma 1 al caracter ASCII</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>if(v[2] == 'd')</div><div><span class="Apple-tab-span" style="white-space:pre">              </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                    </span>v[2] = 'a';</div><div><span class="Apple-tab-span" style="white-space:pre">                     </span>v[1]++;</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>if(v[1] == 'd')</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                            </span>v[1] = 'a';</div><div><span class="Apple-tab-span" style="white-space:pre">                             </span>v[0]++;</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>}</div><div>        }</div><div>}</div><div><br></div><div>Basicamente trabaja como lo haria un reloj digital. Con la funcion anterior obtengo las permutaciones, pero tambien un monton de series inservibles (con letras repetidas o letras sin usar). Se pueden comparar las cadenas obtenidas y eliminar las inservibles, pero hacer eso es poco eficiente y poco practico en un vector mucho mas grande.</div><div><br></div><div>Por eso, si alguien tiene una idea de como obtener esas permutaciones de una mejor manera, le agradeceria que me comunique su idea.</div><div><br></div><div><br></div><div>Att.</div><div>Jose B.</div>                                       </body>
</html>