四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
2014-11-14 00:00
471 查看
回溯法可以用来求解排列组合问题
回溯法框架
回溯法框架
void backtrack (int t) { if (t>n) output(x); else for (int i=f(n,t);i<=g(n,t);i++) { x[t]=h(i); if (constraint(t)&&bound(t)) backtrack(t+1); } }
#include <iostream> using namespace std; //匹配数 int num=0; //判断当前n对括号是否匹配 bool isMatch(int n,char* bracket) { int left_num=0,right_num=0; for(int i=0;i<2*n;++i) { if(bracket[i]=='l') left_num++; else if(bracket[i]=='r') right_num++; if(left_num<right_num) return false; } if(left_num==n && right_num==n) return true; else return false; } //回溯法 void BracketMatch(int n,int i,char* bracket) { if(i==2*n) { if(isMatch(n,bracket)) num++; return; } else { bracket[i]='l'; BracketMatch(n,i+1,bracket); bracket[i]='r'; BracketMatch(n,i+1,bracket); } } int main() { int n; cin >>n; char* bracket=new char[2*n]; BracketMatch(n,0,bracket); cout <<num<<endl; return 0; }
相关文章推荐
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 【编程题目】四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- 四对括号可以有多少种匹配排列方式-新解法
- 46 四对括号可以有多少种匹配排列方式
- 微软100题第46题:四对括号可以有多少种匹配排列方式?
- 四对括号可以有多少种匹配排列方式?
- 46.搜狐:四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式
- 四对括号可以有多少种匹配排列方式?
- n对括号可以有多少种匹配排列方式(算法面试题)
- 【微软谷歌面试100题--【46】N对括号可以有多少种匹配排列方式
- N对括号可以有多少种匹配排列方式
- n对括号有多少种匹配排列方式
- n对括号有多少种匹配排列方式
- 数据结构中的栈,在解决很多问题都有用处,比如括号匹配,迷宫求解,表达式求值等等 java中有封装好的类,可以直接调用。
- 四则运算问题扩充:1、题目避免重复;2、可定制(数量/打印方式);3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;
- 打印所有括号匹配排列方式