打印所有括号匹配排列方式
来源:互联网 发布:2017年淘宝店怎么装修 编辑:程序博客网 时间:2024/05/21 17:03
对于2对左右括号,其排列方式有:
( ( ) )
( ) ( )
4对括号的排列方式有:
( ( ( ( ) ) ) )
( ( ( ) ( ) ) )
( ( ( ) ) ( ) )
( ( ( ) ) ) ( )
( ( ) ( ( ) ) )
( ( ) ( ) ( ) )
( ( ) ( ) ) ( )
( ( ) ) ( ( ) )
( ( ) ) ( ) ( )
( ) ( ( ( ) ) )
( ) ( ( ) ( ) )
( ) ( ( ) ) ( )
( ) ( ) ( ( ) )
( ) ( ) ( ) ( )
下面给出生成排列的代码:
#include <iostream>#include <vector>using namespace std;//Print the legal combinationvoid PrintBrackets(const vector<char> & brackets){for (vector<char>::const_iterator it = brackets.begin(); it != brackets.end(); ++it)cout << *it <<" ";cout <<endl;}// bracketsNum: the sum of left bracket and right bracketvoid MatchBrackets(int bracketsNum, vector<char> & brackets){int left (0), right(0);for (vector<char>::iterator it = brackets.begin(); it != brackets.end(); ++it){if ('(' == *it) left ++;else right ++;}// The num of left bracket should not be less than the number of right bracket at any positionif (right > left) return;if (left == right && left + right == bracketsNum){PrintBrackets(brackets);return ;}if (left + right >= bracketsNum){return ;}// The number of left bracket equal to the number of right bracket,// so we can only append the left bracket '(' now.if (left == right){brackets.push_back('(');MatchBrackets(bracketsNum, brackets);brackets.pop_back();}// The number of the left bracket equal to bracketsNum/2// no need to append '('.else if (bracketsNum - left == right){brackets.push_back(')');MatchBrackets(bracketsNum, brackets);brackets.pop_back();}// It`s legal to append '(' and ')'else{brackets.push_back('(');MatchBrackets(bracketsNum, brackets);brackets.pop_back();brackets.push_back(')');MatchBrackets(bracketsNum, brackets);brackets.pop_back();}}int main(){int braNum;while (cin>> braNum && braNum){vector<char> brackets;MatchBrackets(braNum, brackets);}return 0;}
- 打印所有括号匹配排列方式
- 打印所有括号匹配排列方式
- 打印括号匹配的所有排列
- 打印所有匹配括号组合
- 括号 匹配 排列问题
- 四对括号可以有多少种匹配排列方式?
- 四对括号可以有多少种匹配排列方式?
- 四对括号可以有多少种匹配排列方式
- N对括号可以有多少种匹配排列方式
- n对括号有多少种匹配排列方式
- 打印n对括号匹配的所有组合
- 输出n对括号的所有有效(左右括号成对匹配)排列
- 打印匹配括号
- 打印括号的所有组合
- 46.搜狐:四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式-新解法
- n对括号可以有多少种匹配排列方式(算法面试题)
- 46 四对括号可以有多少种匹配排列方式
- 各种数据结构insert和search操作的平均时间复杂度比较
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 黑马程序员——WinFrom常用控件的属性和方法
- 字符串最小表示模板
- arm仿真器Skyeye的安装及使用
- 打印所有括号匹配排列方式
- Codeforces140Div.2
- 前缀、中缀和后缀表达式
- 黑马程序员——C#中字符串方法
- 【thinkphp3.x】thinkphp3.x中的Widget功能
- T430 VirtualBox下安装MAC雪豹10.6
- 黑马程序员——SQL基础
- Ubuntu下彻底卸载mysql
- HDU 1561 The more, The Better (treeDP 背包) #by Plato