打印出所有可能的括号组合

2014-11-24 10:28:03 · 作者: · 浏览: 0

以下为递归方法实现
[cpp]
#include
#include

#define N 3

void print(int left, int right, std::vector v)
{
if (left == right && left == N)
{
for (size_t i = 0; i < v.size(); i++)
{
std::cout << v[i];
}
std::cout << std::endl;
return;
}

if (left > right)
{
v.push_back(')');
print(left, right + 1, v);


if (left < N)
{
v.pop_back();
v.push_back('(');
print(left + 1, right, v);
}
}
else
{
v.push_back('(');
print(left + 1, right, v);
}
};


int main()
{
std::vector v;
print(0, 0, v);

return 0;
};