n对括号匹配的种类

来源:互联网 发布:js 手机号验证 编辑:程序博客网 时间:2024/06/15 02:24
#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;elsereturn 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;}

0 0
原创粉丝点击