首页 > 其他 > 详细

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

时间:2015-05-26 20:35:09      阅读:379      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!