//5_4_5: Anagrams by Stack 通过一系列栈操作将字符翻转 ZOJ1004
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int i,len,top,str_len,dst_len;
char str[100],dst[100],ans[100],stack[100];
void dfs(int x,int y)
{
char temp;
if(x == str_len && y == str_len)
{
for(i = 0;i < 2 * str_len;i ++)
printf("%c ",ans[i]);
printf("\n");
return;
}
if(x < str_len)
{
ans[len ++] = 'i';
stack[++top] = str[x];
dfs(x + 1,y);
len --;
top --;
}
if(top > -1 && stack[top] == dst[y])
{
temp = stack[top--];
ans[len ++] = 'o';
dfs(x,y + 1);
len --;
stack[++top] = temp;
}
}
int main()
{
while(scanf("%s",str) != EOF)
{
scanf("%s",dst);
str_len = strlen(str);
dst_len = strlen(dst);
if(str_len != dst_len)
{
printf("[\n]\n");
continue;
}
len = 0;
top = -1;
printf("[\n");
dfs(0,0);
printf("]\n");
}
return 0;
}
/*测试结果:通过ZOJ1004检测
madam
adamm
[
i i i i o o o i o o
i i i i o o o o i o
i i o i o i o i o o
i i o i o i o o i o
]
bahama
bahama
[
i o i i i o o i i o o o
i o i i i o o o i o i o
i o i o i o i i i o o o
i o i o i o i o i o i o
]
long
short
[
]
eric
rice
[
i i o i o i o o
]
^Z
请按任意键继续. . .
*/
ZOJ1004 Anagrams by Stack
最新推荐文章于 2025-01-17 13:03:51 发布