原题目链接:http://acm.zju.edu.cn/show_problem.php?pid=1004
解题思路:还是递归。逐个压栈,如果可以对应上输出的字符串,则考虑出栈的情况。但要处理好每种可能性之后的数据恢复问题。
说明:a,b为输入的字符串,s作为字符的栈,ans保存输出结果。len为字符串长度。num表示目前输出结果的进度。ap,bp,sp分别表示字符串a,b,s处理进度的指针。
原评价:测试失败,时间溢出,超过设定的1秒时限。初步断定是在判断2字符串是否合法上还欠缺一点,将时间浪费在处理不合法数据上。但现在做的很头疼,还是以后再改了。。。
新评价:测试成功,时间溢出问题出在输入语句while(1)上。应该是while(cin>>a>>b),否则会陷入无限读入循环。
源程序:
#include
#include
using namespace std;
string a,b,s,ans;
bool ju,ju2;
int len,num,sp;
void eat(int ap,int bp)
{
string ss;
ss.assign(100,' ');
if(bp>len) {for(int i=1;i