¿Hay una clase de plantilla C++ que implemente operaciones con permutaciones y grupos de permutación? Tal clase tiene que implementar la búsqueda de producto e inversa, multiplicación, etc.¿Hay alguna clase de C++ que implemente operaciones con permutaciones?
Respuesta
STL incluye una función para la permutación en algorithm.h. Aquí hay un ejemplo para eso.
int main() { int myints[] = {1,2,3}; cout << "The 3! possible permutations with 3 elements:\n"; sort (myints,myints+3); do { cout << myints[0] << " " << myints[1] <<" " << myints[2] << endl; } while (next_permutation (myints,myints+3)); return 0; }
Por favor, "algoritmo" no "algorithm.h"! – KTC
¿Cómo me ayuda a encontrar la permutación inversa, por ejemplo? –
No es así. Esta función simplemente enumera los miembros del grupo de permutación. No sabe nada sobre la estructura del grupo; solo se basa en los elementos de la matriz de entrada que tiene un orden definido. –
No conozco ninguno, pero debería ser lo suficientemente fácil de implementar. Internamente, podría representar la permutación como un vector, p. (1 3 4 2 7 5 6) siendo una permanente de 1-7 enviando 1-> 1, 2-> 3, 3-> 4, 4-> 2 etc. o como un conjunto de ciclos, p. (1) (2 3 4) (5 7 6), e implementar las operaciones en términos de estos. Presumiblemente, el argumento de la plantilla sería el tamaño del grupo de permutación.
- 1. ¿Hay algún lenguaje que implemente genéricos _well_?
- 2. ¿Hay alguna herramienta que implemente una interfaz envolviendo un campo o propiedad miembro?
- 3. C++ operaciones simples (+, -, /, *) clase de evaluación
- 4. permutaciones de matriz C con macros
- 5. ¿Hay algún tipo de genéricos que implemente QueryInterface?
- 6. ¿Cómo puedo escribir una clase de contenedor genérica que implemente una interfaz dada en C#?
- 7. Necesito biblioteca C que implementa operaciones de conjunto
- 8. ¿Alguna manera de hacer que Eclipse implemente automáticamente funciones virtuales puras?
- 9. ¿Cómo hacer una clase de Java que implemente una interfaz con dos tipos genéricos?
- 10. Permutaciones con restricciones adicionales
- 11. Buscando biblioteca que implemente compresión/descompresión LZW
- 12. ¿Hay alguna clase de contenedor Qt observable?
- 13. ¿Hay alguna clase de C++ que no se pueda usar en STL?
- 14. ¿Hay alguna manera de forzar una clase C# para implementar ciertas funciones estáticas?
- 15. ¿Hay alguna biblioteca de reconocimiento facial C# que funcione?
- 16. ¿Hay alguna forma en C# para anular un método de clase con un método de extensión?
- 17. ¿Hay alguna manera, usando plantillas, para evitar que una clase sea derivable en C++
- 18. Implemente el dispositivo OPOS en C#
- 19. Implemente el tiempo de espera de C#
- 20. En caso de que un objeto implemente un iterador u otro objeto que implemente un iterador
- 21. ¿Hay alguna alternativa a C?
- 22. En C# 3.0, ¿hay alguna clase que me ayude a generar html estático?
- 23. operaciones atómicas en C++
- 24. ¿Hay algún módulo que implemente un tipo de matriz eficiente en Erlang?
- 25. ¿Hay alguna manera de que Bitbucket no solicite mi contraseña cada vez que realizo operaciones Mercurial remotas?
- 26. ¿Hay alguna biblioteca C++ XSLT?
- 27. ¿Hay alguna manera de prohibir la subclasificación de mi clase?
- 28. ¿Hay alguna manera de editar un pdf con C#?
- 29. ¿Hay alguna distribución de Linux que viene con python 3?
- 30. ¿Hay alguna forma de que jadclipse funcione con Eclipse 3.4?
En C++ moderno, no usaría una clase para esto. Probablemente usarías múltiples plantillas de funciones. Una plantilla de función por operación que desea admitir, con los rangos de entrada reales con plantilla. – MSalters
La programación funcional no es una opción. La programación orientada a objetos es buena. Realmente necesito una clase de plantilla. –
@MSalters: ¿Cuál es el "rango de entrada" para una función que toma dos permutaciones y devuelve el producto de esas permutaciones? ¿Está sugiriendo que las permutaciones se representan mejor al cliente como pares de iteradores que como objetos opacos? Creo que Alexey busca algo con más conocimiento de la teoría de grupos que std :: next_permutation. –