Aquí está el código. Lo que básicamente (como entendí) quiere hacer es obtener toda la permutación de una cadena, y para cada permutación, verificar si es palíndromo o no.
#include #include #include usando el espacio de nombres estándar; bool isPalindrome (string str) { int n1 = 0; int n2 = (int) str.size () - 1; mientras que (n1 <n2) { if (str [n1]! = str [n2]) falso retorno; n1 ++; n2--; } volver verdadero; } permutación nula (string str, int start) { if (inicio == (int) str.size ()) { cout << "Is" << str << "palindrome?" << isPalindrome (str) << endl; regreso; } for (int i = start; i <(int) str.size (); i ++) { swap (str [i], str [inicio]); permutación (str, inicio + 1); swap (str [i], str [inicio]); } } int main () { permutación ("abab", 0); // permutación ("abba", 0); // permutación ("aaba", 0); devuelve 0; }
¡Feliz codificación!
- Cómo aprender la estructura de datos en 1 mes en el albergue
- Java (lenguaje de programación): ¿Es correcto este método para insertar un nuevo nodo en un árbol de búsqueda binario?
- ¿Por qué no podemos ejecutar Bellman Ford desde la fuente y relajar los bordes de los vecinos de forma recursiva y hacer una sola pasada a través de los bordes?
- ¿Cuál es la forma más eficiente de verificar si un elemento es parte de un conjunto?
- ¿Funciona la siguiente implementación para encontrar la subcadena común más larga dentro de dos cadenas?