打印所有括号匹配排列方式
来源:互联网 发布:淘宝海报尺寸大小 编辑:程序博客网 时间:2024/05/28 17:06
对于2对左右括号,其排列方式有:
( ( ) )
( ) ( )
4对括号的排列方式有:
( ( ( ( ) ) ) )
( ( ( ) ( ) ) )
( ( ( ) ) ( ) )
( ( ( ) ) ) ( )
( ( ) ( ( ) ) )
( ( ) ( ) ( ) )
( ( ) ( ) ) ( )
( ( ) ) ( ( ) )
( ( ) ) ( ) ( )
( ) ( ( ( ) ) )
( ) ( ( ) ( ) )
( ) ( ( ) ) ( )
( ) ( ) ( ( ) )
( ) ( ) ( ) ( )
下面给出生成排列的代码:(原文链接:http://blog.csdn.net/realxie/article/details/8036892 )
#include <iostream> #include <vector> using namespace std; //Print the legal combination void 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 bracket void 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 position if (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 == left) { 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 四对括号可以有多少种匹配排列方式
- java servlet直接转向的方法
- 使用maven2 打ear包
- RL note(1)_Why exploratory is needed
- HDOJ 1061 Rightmost Digit 13.04.21周赛结题报告
- c++高级---C四种强制类型转换的总结
- 打印所有括号匹配排列方式
- C# ListView用法详解
- java基础之内省
- linux sysfs(7)
- js正则函数match、exec、test、search、replace、split使用介绍
- android4.0自定义锁屏apk形式总结
- 筛法求100002(十万零二)个素数
- HEVC/H.265参考代码跟踪
- 如何修改 simple_list_item_2 上下两个 textview 的字体大小