es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C++ se bloquea al leer cadenas y almacenarlas en un vector.

#include <iostream>
#include <vector>

using namespace std;

typedef vector<string> VS;

void back(VS &paraules, VS &sol, int n, int i) {
    if(i == n) {
        cout << "{" << sol[0];
        for(int j = 1; j < n; j++) {
            cout << "," << sol[i];
        }
        cout << "}" << endl;
    }
    else {
        for(int j = 0; j < n; j++) {
            sol[i] = paraules[j];
            back(paraules, sol, n, i+1);
        }
    }
}

int main() {
    int n;
    cin >> n;
    VS sol(n);
    VS paraules(n);
    for(int i = 0; i < n; i++) {
        cin >> paraules[i];
    }
    cout << "Esto no se imprimirá";
    back(paraules, sol, n, 0); 
}

He pegado todo el código ahora. Un backtracking que toma n palabras e imprime todas las permutaciones de las palabras.

Inicialmente pensé que era un problema con la lectura ya que “Esto no se imprimirá” no se imprimía. Después de hacer algunas pruebas, descubrí que comentar la llamada a la función en la última línea hace que el error desaparezca y el código ya no se bloquea.

Entonces, ¿quizás es la función? Esto aún no explica por qué no se imprime, ya que la llamada ocurre después del cout.

Un ejemplo de entrada podría ser:

2 hi bye

Tags:  ,

Answer

  1. Avatar for davy.ai

    Este código toma un vector de n palabras como entrada y utiliza la técnica de retroceso (backtracking) para encontrar todas las posibles permutaciones de esas palabras. La función back recorre de forma recursiva todas las combinaciones posibles y las imprime una vez que llega al final.

    Sin embargo, parece haber un error de segmentación ocurriendo. Después de algunas pruebas, se descubrió que comentar la llamada a la función en la última línea hace que el error desaparezca y el código ya no se cuelgue.

    Es posible que haya un problema con la propia función back que esté causando la falla de segmentación. Además, el hecho de que la línea de cout en la función principal ("Esto no se imprimirá") no se esté imprimiendo podría indicar un problema con la forma en que se lee o maneja la entrada.

    Se necesitaría proporcionar más información, como el mensaje de error y cualquier contexto adicional, para identificar el problema exacto.

Comments are closed.