四對括號可以有多少種匹配排列方式?比如兩對括號可以有兩種:()()和(())
阿新 • • 發佈:2019-02-19
其實就是一個排列問題,唯一的區別是,需要注意右括號的數量不能超過左括號。
#include <string> void BracesHelper(int left, int right, int cur, int size,std::string output) { if(size == right) { printf("%s",0,output.c_str()); return; } for(int i = cur; i < size; ++i) { output.append("( "); left++; if(left < size) { BracesHelper(left,right,i + 1,size,output); } if(left >= right) { output.append(") "); right++; BracesHelper(left,right,i + 1,size,output); } } } void Braces(int N) { std::string output; BracesHelper(0,0,0,N,output); }