其实就是一个排列问题,唯一的区别是,需要注意右括号的数量不能超过左括号。
#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);
}
本文探讨了排列问题中括号匹配的唯一性,详细解释了左括号和右括号数量的关系,并通过代码实现了一个解决方案。
1239

被折叠的 条评论
为什么被折叠?



