输出括号所有合法匹配-sohu产品技术训练营笔试题-2013年5月12日
来源:互联网 发布:抗日知乎 编辑:程序博客网 时间:2024/05/16 18:33
简答题最后一题,编程实现所有括号的合法匹配
如输入3
输出:"((()))”, “(()())”, “(())()”, “()(())”, “()()()”
思路:深搜+剪枝,关键在于记录已经用掉的左括号个数和右括号的个数,当用过的左括号个数小于右括号则非法;当二者个数和大于2N则非法;当二者个数相等且数目等于2N此时输出。
#include <iostream>using namespace std;void DFS_bracket(char* str,int n, int left_used, int right_used){ if(left_used == right_used && left_used + right_used == 2*n) {for(int i = 0; i < left_used*2; ++i)cout<<str[i];cout<<endl; return; } if(left_used < right_used || left_used + right_used >= 2*n) { return ; } int index = left_used + right_used; str[index] = '('; DFS_bracket(str, n, left_used + 1, right_used); str[index] = ')'; DFS_bracket(str, n, left_used, right_used + 1);}int main(){int parenthesisnum;cin>>parenthesisnum;char* str = new char[parenthesisnum*2+1];DFS_bracket(str,parenthesisnum,0,0);return 0;}
- 输出括号所有合法匹配-sohu产品技术训练营笔试题-2013年5月12日
- 德梅齐里亚克砝码问题-sohu产品技术训练营笔试题-2013年5月12日
- 2013SOHU技术中心新生训练营技术笔试题
- 求出对应N的所有合法匹配括号 (DFS)---小米笔试题
- 2013年搜狐SOHU实习生技术笔试题
- 2013年搜狐SOHU实习生技术笔试题
- 2013年搜狐SOHU实习生技术笔试题
- 输出所有的合法的括号组合
- 【实习生笔试面试题】2013年搜狐SOHU实习生技术笔试题
- 合法的括号匹配
- 2013年5月12日 搜狐实习生校园招聘笔试题
- 虚拟化技术产品资讯 2009年4月5日
- 2013年4月19日--佳都新太笔试题+解答
- 阿里巴巴2013实习招聘笔试题5月19日
- 每天一道笔试题-2012年3月12日
- 每天一道笔试题-2012年3月5日
- 2017年5月13日 恒生电子笔试题
- 5-29 sohu 笔试
- QWebView实现二级链接的方式
- Android Google Map API 开发基础知识
- Broadcom softmac WLAN 驱动解析(2)
- C++中的动态绑定
- Flex : HTTPService 请求加载权限还是之前登录人的权限
- 输出括号所有合法匹配-sohu产品技术训练营笔试题-2013年5月12日
- 快速排序非递归实现
- 各种字符串Hash函数比较
- Deep learning:十八(关于随机采样)
- 策略模式
- EM_EXSETSEL
- TCP/IP
- EM_REPLACESEL message
- 两种写法,为什么第二种就总崩溃呢