Dev - C++ - combinaciones sin repeticion

 
Vista:
sin imagen de perfil

combinaciones sin repeticion

Publicado por andre (1 intervención) el 12/02/2018 05:51:11
Hola!!!!!!!!!!!!

Me gustaria q me ayudaran con algún algoritmo sencillo donde la entrada sea n, que es un numero entero cualkiera, y q me de todas las permutaciones que tiene ese numero, por ejemplo, si pongo el numero 3, me de las 6 combinaciones que tiene en forma de lista:

123
132
213
231
312
321



PD: si m pudieran ayudar para antes del 2 de junio se los agradeceria

PD2: si m pudieran ayudar dsiciendome como escribirlo n el programa, se los agradeceria, es que no se programar muy bien
gracias. c++
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alexander
Val: 18
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

combinaciones sin repeticion

Publicado por Alexander (6 intervenciones) el 16/02/2018 18:08:09
Hola, en esta web puedes encontrar el siguiente algoritmo para hacer permutaciones (http://c.conclase.net/curso/?cap=024), solo faltaba hacer la rutina que dices teclear un numero y restarle uno en uno (4 -> 4321) copiarlo a un array y luego permutarlo.

#include <iostream>
#include <cstring>
using namespace std;
static void Permutaciones(char * cad, int l=0);
static void Permutaciones(char * cad, int l)
{
char c; /* variable auxiliar para intercambio */
int i, j; /* variables para bucles */
int n = strlen(cad); //total de caracteres

for(i = 0; i < n-l; i++) {
if(n-l > 2) Permutaciones(cad, l+1);
else cout << cad <<endl;
/* Intercambio de posiciones */
c = cad[l];
cad[l] = cad[l+i+1];
cad[l+i+1] = c;
if(l+i == n-1) {
for(j = l; j < n; j++) cad[j] = cad[j+1];
cad[n] = 0;
}
}
}
int main(int argc, char **argv)
{
int n=0;
cin>>n;
char array[8];
u_short c=0;
for(;n>0;--n)
{
array[c++]=n+48;
}
array[c]=0;
cout<<array<<endl;
cout<<"Permutaciones posibles"<<endl;
Permutaciones(array);
return 0;
}

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

combinaciones sin repeticion

Publicado por Alexander (3 intervenciones) el 10/02/2023 14:36:13
"message": "el identificador \"u_short\" no está definido"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

combinaciones sin repeticion

Publicado por Alexander (3 intervenciones) el 10/02/2023 15:44:36
#include <algorithm>
#include <string>
#include <iostream>

int main( )
{
std::string cadena = "ABCD";

do
{
std::cout << cadena << std::endl;
} while ( std::next_permutation( cadena.begin( ), cadena.end( ) ) );
}
template<class BidirIt>
bool next_permutation(BidirIt first, BidirIt last)
{
if (first == last) return false;
BidirIt i = last;
if (first == --i) return false;

while (1) {
BidirIt i1, i2;

i1 = i;
if (*--i < *i1) {
i2 = last;
while (!(*i < *--i2)) ;

std::iter_swap(i, i2);
std::reverse(i1, last);
return true;
}
if (i == first) {
std::reverse(first, last);
return false;
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

combinaciones sin repeticion

Publicado por Alexander (3 intervenciones) el 10/02/2023 15:45:46
Necesito este codigo en python
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar