AC的代码,结果调试了一下午。还有就是strlen()这个方法还得自己写,提交的时候不能直接用啊,不知道要怎么弄
#include<iostream>
using namespace std;
const int MAX =50;
//process记录i,o操作;stack记录堆栈,input记录输入;input2记录目标
char process[MAX*2],stack[MAX],input[MAX],input2[MAX];
int length;//length记录字符长度
int strlen(char * input)
{
int i=0;
while(input[i]!='\0')
i++;
return i;
}
void println()
{
for(int i=0;i<length*2;i++)
cout<<process[i]<<" ";
cout<<endl;
}
void DFS(int process_point,int stack_point,int input_point,int output_number)
{
if(process_point==length*2)
println();
//入栈
if(input_point<length){
process[process_point]='i';char temp = stack[stack_point];stack[stack_point]=input[input_point];
DFS(process_point+1,stack_point+1,input_point+1,output_number);
stack[stack_point] = temp;
}
//出栈
if(stack_point>0&&stack[stack_point-1]==input2[output_number]){
process[process_point]='o';
DFS(process_point+1,stack_point-1,input_point,output_number+1);
}
}
int main()
{
while(cin>>input>>input2)
{
cout<<"["<<endl;
length = strlen(input);
int len2 = strlen(input2);
if(len2==length)
DFS(0,0,0,0);
cout<<"]"<<endl;
}
system("pause");
return 0;
}