求 problem 1004 代码

Summy1208 2005-07-05 08:06:57
http://acm.zju.edu.cn/show_problem.php?pid=1004
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmcd 2005-07-06
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char s1[100],s2[100],stk[100],ans[200];
int l1,l2;

void output(int n)
{
int i;
for(i=0;i+1<n;i++)
{
printf("%c ",ans[i]);
}
printf("%c\n",ans[i]);
}

void go(int in,int out,int p,int top)
{
if(top<0)return;
if(in==l1 && out==l2)
{
output(p);
return;
}

if(in<l1)
{
stk[top]=s1[in];
ans[p]='i';
go(in+1,out,p+1,top+1);
}

if(top>0 && out<l2 && stk[top-1]==s2[out])
{
ans[p]='o';
go(in,out+1,p+1,top-1);
stk[top-1]=s2[out];
}
}

int main()
{
while(scanf("%s%s",s1,s2)==2)
{
l1=strlen(s1);
l2=strlen(s2);
printf("[\n");
if(l1==l2)go(0,0,0,0);
printf("]\n");
}
return 0;
}
Summy1208 2005-07-05
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

char Src[500];
char Des[500];
char Stack[500];
char Result[1000];

int Len;

void Resolve(int nTop, int nSrc, int nDes, int nResult)
{
if (Stack[nTop] == Des[nDes])
{
Result[nResult++] = 'o';
nTop--;
++nDes;

if (nTop == 0 && nDes == Len)
{
cout<<Result<<'\n';
return;
}
else
Resolve(nTop, nSrc, nDes, nResult);
}
else
{
while (Stack[nTop] != Des[nDes])
{
Stack[++nTop] = Src[nSrc++];
Result[nResult++] = 'i';
}
Resolve(nTop, nSrc, nDes, nResult);
}
}

int main()
{
while(cin>>Src>>Des)
{
Len = strlen(Src);
cout<<"[\n";
if (Len == strlen(Des))
Resolve(0,0,0,0);
cout<<"]\n";
}
return 0;
}

小弟只能得到一个解 不知怎样回朔?

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧