对于给定的字符串,求其入栈后,所有可能的出栈顺序

来源:互联网 发布:sql中update更新数据 编辑:程序博客网 时间:2024/05/18 01:07
#include <iostream>#include <cstring>#define M 100using namespace std;void stack_in_out(char str[],int len);void func(char str[],int pstr,int len,char st[],int pst,char temp[],int pt);int main(){char str[M];cin>>str;stack_in_out(str,strlen(str));return 0;}void stack_in_out(char str[],int len){char st[M];int pst=0;char temp[M];int pt=0;func(str,0,len,st,0,temp,0);}void func(char str[],int pstr,int len,char st[],int pst,char temp[],int pt){if(pt==len){temp[pt]=0;puts(temp);return;}if(pstr<len){st[pst]=str[pstr];func(str,pstr+1,len,st,pst+1,temp,pt);}if(pst>0){//此处必须保存栈顶,因为后边出栈的操作会影响栈的内容,从而影响后续程序的执行结果char ch=st[pst-1];;temp[pt]=st[pst-1];func(str,pstr,len,st,pst-1,temp,pt+1);st[pst-1]=ch;}}