1. 程式人生 > >四對括號可以有多少種匹配排列方式?比如兩對括號可以有兩種:()()和(())

四對括號可以有多少種匹配排列方式?比如兩對括號可以有兩種:()()和(())

其實就是一個排列問題,唯一的區別是,需要注意右括號的數量不能超過左括號。

#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);
}