字母转换(深搜)
来源:互联网 发布:linux坏了怎么卸载 编辑:程序博客网 时间:2024/06/06 23:52
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
通过栈交换字母顺序。给定两个字符串,要求所有的进栈和出栈序列(i表示进栈,o表示出栈),使得字符串2在求得的进出栈序列的操作下,变成字符串1。输出结果需满足字典序。例如TROT 到 TORT:
[
i i i i o o o o
i o i i o o i o
]
[
i i i i o o o o
i o i i o o i o
]
输入
给定两个字符串,第一个字符串是源字符串,第二个字符是目标目标字符串。
输出
所有的进栈和出栈序列,输出结果需满足字典序
输入样例
madam adamm bahama bahama long short eric rice
输出样例
[ 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 ][ 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 ] [ ] [ i i o i o i o o ]
提示
来源
注意深搜边界条件的判定
#include <iostream>#include <stdio.h>#include <stack>#include <string.h>using namespace std;struct MyString{char s[102];int length;};MyString s1, s2;//s1初始字串,s2目标字串char ans[102];void write(){int i;for (i = 0; i <= s2.length * 2 - 1; i++){printf("%c ", ans[i]);}printf("\n");return;}void dfs(int n, int m, stack<char> s, int i)//s1第n个,s2第m个,当前的栈为s,解的下标为i{if (m >= s2.length&&n>=s1.length&&s.empty()){write();return;}if (n >= s1.length&&s.top() != s2.s[m]){return;}if (s.empty() || s.top() != s2.s[m]){s.push(s1.s[n]);ans[i] = 'i';dfs(n + 1, m, s, i + 1);}else{s.push(s1.s[n]);ans[i] = 'i';dfs(n + 1, m, s, i + 1);s.pop();//还原栈s.pop();//下一种情况,相等出栈ans[i] = 'o';dfs(n, m + 1, s, i + 1);}return;}int main(){stack<char> s0;char x[102];while (scanf("%s", x) != EOF){strcpy(s1.s, x);s1.length = strlen(s1.s);scanf("%s", s2.s);s2.length = strlen(s2.s);while (!s0.empty()){s0.pop();}printf("[\n");if (s1.length == s2.length){dfs(0, 0, s0, 0);}printf("]\n");}return 0;}
0 0
- 字母转换(深搜)
- 字母转换
- 字母转换
- 字母转换
- 转换字母
- 字母转换
- 字母转换
- 字母转换
- 大小写字母转换 (简化算法)
- C语言(字母大小写的转换)
- 字母的大小写转换
- 汉字转换为首字母
- 转换字母的大小写
- js大小写字母转换
- 字母大小写转换
- java 大小写字母转换
- js字母大小写转换
- flash字母转换工具
- UFLDL作业记录
- BaseFragment onClick中点击事件跳转到Activity
- windows----进程
- 8年女程序员带一个项目后的总结
- 游戏开发人员需要看的书籍
- 字母转换(深搜)
- iOS-关于键盘弹出和关闭
- 学习Java的第一个程序
- Android 智能短信第一天(下午)
- UVA - 694 The Collatz Sequence
- ubuntu上的网易云音乐
- HDU-5289<two pointers>
- 聊聊Android的缓存(四)
- bootstrap editable 动态改变列的编辑状态