打印出全部可能的括号组合

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

以下为递归方法实现

#include <vector>
#include <iostream>

#define N 3

void print(int left, int right, std::vector<char> 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<char> v;
    print(0, 0, v);

    return 0;
};