N对括号可以有多少种匹配排列方式
2013-06-25 21:29
274 查看
/* copyright@nciaebupt 转载请注明出处 题目:N对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(()) 主要思想是递归 卡特兰数:通项公式 h(n)=c(n,2n)-c(n-1,2n) h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2) */ #include <cstdlib> #include <iostream> #include <vector> #include <string> std::vector<std::string> nBrackets(int n){ std::vector<std::string> vec1; if(n == 1){ vec1.push_back("()"); return vec1; } std::vector<std::string> vec = nBrackets(n-1); for(int i = 0; i < vec.size(); ++i){ vec1.push_back("("+vec[i]+")"); vec1.push_back("()" + vec[i]); if("()"+vec[i] != vec[i]+"()"){ vec1.push_back(vec[i]+"()"); } } return vec1; } int main(int argc, char ** argv){ int n = 4; std::vector<std::string> vec; vec = nBrackets(n); std::cout<<vec.size()<<std::endl; for(int i = 0; i < vec.size();++i){ std::cout<<vec[i]<<std::endl; } system("pause"); return 0; }
相关文章推荐
- 46.搜狐:四对括号可以有多少种匹配排列方式
- 【编程题目】四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 微软100题第46题:四对括号可以有多少种匹配排列方式?
- 【微软谷歌面试100题--【46】N对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- n对括号可以有多少种匹配排列方式(算法面试题)
- 四对括号可以有多少种匹配排列方式?
- 46 四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式-新解法
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?
- n对括号有多少种匹配排列方式
- n对括号有多少种匹配排列方式
- 两个问题:n对括号有多少种匹配方式与与最长递减子序列
- 打印所有括号匹配排列方式
- 二柱子问题扩充:1题目避免重复;2可定制(数量/打印方式);3 可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数,假分数,...),是否支持小数,(精确到多少位),打印中每行的间隔可调整;