已知进栈序列,求出栈序列

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/algzjh/article/details/52769949
#include<cstdio>
#include<string.h>

int count=0;
char a[10];

void perm(char a[],int k,int n)
{
    int i,u,v,w,flag;
    char temp,t[10];
    strcpy(t,a);
    if(k==n)
    {
        flag=1;
        for(u=0;u<=n-2;u++)
            for(v=u+1;v<=n-1;v++)
                for(w=v+1;w<=n;w++)
                    if((a[v]<a[w])&&(a[w]<a[u])) flag=0;
        if(flag)
        {
            count++;
            printf("%d:%s\n",count,a);
        }
    }
    else
        for(i=k;i<=n;i++)
    {
        strcpy(a,t);
        temp=a[k];
        a[k]=a[i];
        a[i]=temp;
        perm(a,k+1,n);
    }
}

int main()
{
    printf("请输入入栈序列\n");
    scanf("%s",a);
    printf("所有出栈序列为:\n");
    perm(a,0,strlen(a)-1);
}

展开阅读全文

没有更多推荐了,返回首页