oj1060: Salida de pila legal: Dada una n, genera todas las secuencias de pop legales de 1 a n.

Titulo original

Inserte la descripción de la imagen aquí

Análisis y código

El requisito del sujeto es generar toda la secuencia de la pila, por lo que si usamos la pila para simular esta situación, básicamente no habrá ningún error, pero es contraproducente, no importa cómo se escriba el código, los resultados obtenidos no pueden cumplir con los requisitos y finalmente se realizan en intentos continuos. El código, por supuesto, también se refiere a algunos otros códigos, el siguiente es el análisis: el
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
código de CA se adjunta a continuación:

#include <iostream>
#include <stack>
#include <queue>
using namespace std;

int n;
void solve(queue<int>a1, stack<int>s, queue<int>a2);
void one(queue<int>a1, stack<int>s, queue<int>a2);  
void two(queue<int>a1, stack<int>s, queue<int>a2); 

int main()
{
    
    
    queue<int> a1; 
    stack<int> s;  
    queue<int> a2; 
    while(cin>>n)
    {
    
    
        for (int i=1;i<=n;i++)
            a1.push(i);
        solve(a1, s, a2);
        for (int i=0;i<n;i++)
            a1.pop();
    }
    return 0;
}

void solve(queue<int>a1, stack<int>s, queue<int>a2)
{
    
    
    if(a1.empty()&&s.empty())   
    {
    
    
        while(!a2.empty())
        {
    
    
            cout << a2.front();
            a2.pop();
        }
        cout << endl;
        return;
    }
    two(a1, s, a2);
    one(a1, s, a2);
}

void one(queue<int>a1, stack<int>s, queue<int>a2) 
{
    
    
    if(a1.empty()) 
        return;
    s.push(a1.front());
    a1.pop();
    solve(a1,s,a2);
}

void two(queue<int>a1, stack<int>s, queue<int>a2) 
{
    
    
    if(s.empty())  
        return;
    a2.push(s.top());
    s.pop();
    solve(a1,s,a2);
}

Adjunta los resultados:

Inserte la descripción de la imagen aquí
Si te ayuda, ¡también podrías darle un pulgar hacia arriba!

Supongo que te gusta

Origin blog.csdn.net/Freedom_cao/article/details/108449041
Recomendado
Clasificación