题解:
第一:两个字符不相等(即栈顶字符与目标字符不相等);这种情况很容易处理,将匹配word的下一个字符入栈,指针向后挪已为继续递归。
第二:两个字符相等(即栈顶字符与目标字符相等);这种情况有两种选择
(1)字符出栈,并将目标word的指针向后挪一位,继续递归;
(2)将匹配word的下一个字符入栈,指针向后挪一位,继续递归;
每一次递归用path记录下来路径。当目标word的指针超过最后一位了,说明成功,此时将path输出。
#include#include #include using namespace std;char str1[1005],str2[1005];int len1,len2;char path[2005];void test(int x,int y,stack st,int t){ int j; if(y==len2) { printf("i "); for(j=0; j st; st.push(str1[0]); test(0,0,st,0); printf("]\n"); } return 0;}