码迷,mamicode.com
首页 > 其他好文 > 详细

求n对括号的排列组合(卡特兰数)

时间:2015-05-26 20:38:12      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:

求n对括号的排列组合(卡特兰数)
关键:从起始位置至右的任意序列,左括号的数目>=右括号的数目

void generateParenthesis(int n )
{
       generate( nn"" );
}

void generate(int leftNum , int rightNum , string s )
{
       //递归出口
       if ( leftNum == 0 && rightNum == 0)
       {
              cout << s << endl;
       }
       //只要左括号还有,就可以打印
       if ( leftNum > 0)
       {
              generate( leftNum - 1, rightNum, s + '(');
       }
       //当剩余的左括号的数目小于剩余的右括号的树木的时候,即字符串中
左括号的数目>=右括号的数目,就可以打印右括号
       if ( rightNum > 0 && leftNum < rightNum)
       {
              generate( leftNum, rightNum - 1, s + ')');
       }
}


技术分享


技术分享


技术分享
技术分享




求n对括号的排列组合(卡特兰数)

标签:

原文地址:http://www.cnblogs.com/ZhangJinkun/p/4531395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!