算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
来源:互联网 发布:淘宝联盟付款订单失效 编辑:程序博客网 时间:2024/06/02 13:26
来自:http://bbs.csdn.net/topics/350118968
搜狐:
四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
---------------------------------------------
这题直接用栈的思想就可以了,刚开始我还想直接用全排列的方法来解决,发现问题变得更加复杂了,因为重复问题不好解决,所以这里还是利用递归从简单思路出发比较方便。
1:从左边起算,左括号一定大于等于右括号
2:左括号,右括号个数均不能超过总数一半
利用上面这两个条件就可以写出递归
对于全排列问题大家可以想想。。
//============================================================================// Name : BracketsPermutation.cpp// Author : YLF// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>#include <list>using namespace std;void BracketPermutation(int left, int right, int num);int count = 0;list<char> arrayList;int main() {BracketPermutation(0,0,8);cout<<count;return 0;}void BracketPermutation(int left, int right, int num){if(left<right)//条件一return;if(num == 0){std::_List_iterator<char> it = arrayList.begin();count++;for(;it!=arrayList.end();it++)cout<<*it;cout<<endl;} //条件2 if(left<4){ arrayList.push_back('('); num--; left++; BracketPermutation(left, right, num); arrayList.pop_back(); num++; left--; } if(right<4){ arrayList.push_back(')'); num--; right++; BracketPermutation(left, right, num); arrayList.pop_back(); num--; right--; }}
(((())))((()()))((())())((()))()(()(()))(()()())(()())()(())(())(())()()()((()))()(()())()(())()()()(())()()()()14
我检查了下4个括号和6个括号的结果:
(())()()2
((()))(()())(())()()(())()()()5
- 算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?
- 四对括号可以有多少种匹配排列方式?
- 四对括号可以有多少种匹配排列方式
- N对括号可以有多少种匹配排列方式
- 46 四对括号可以有多少种匹配排列方式
- 微软100题第46题:四对括号可以有多少种匹配排列方式?
- 46.搜狐:四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式-新解法
- n对括号可以有多少种匹配排列方式(算法面试题)
- 【微软谷歌面试100题--【46】N对括号可以有多少种匹配排列方式
- n对括号有多少种匹配排列方式
- HDU 5479 Scaena Felix(求一个序列里有多少对括号能够匹配)
- leetcode_22. Generate Parentheses 生成括号,给n对括号,有多少种括号生成方式
- 两个问题:n对括号有多少种匹配方式与与最长递减子序列
- incredibuild 每次都是编译失败Failed to create process。
- Android应用程序框架之无边界设计理念
- windows 下查询网络端口以及任务杀死的方法
- 数学中竟然还有这样的定理!
- java中的标签(结合continue和break)
- 算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- hdu 4045 Machine scheduling(组合数学)
- sql注入
- siverlight简单知识点
- 数学常数e的含义
- “移动浪潮 决胜指尖”金鼠标·网络营销高峰论坛移动营销专场即将举行
- SQL年月日方面的查询信息
- UVa10004 Bicoloring,二分图判定
- 网站建设公司存在的一些问题