左括号要与右括号配对,如:“()”,“()()”,“((()()))”等,c++实现:
// ConsoleApplication4.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <string.h>
using namespace std;
string left(int num)
{
string str;
for (int i = 0; i < num; i++)
str += "(";
return str;
}
string right(int num)
{
string str;
for (int i = 0; i < num; i++)
str += ")";
return str;
}
string make(int n, int nLeft, int nRight, string strhead)
{
string str = strhead;
if (n == nLeft && nLeft == nRight)
{
std::cout<< strhead.c_str() << " * ";
return "";
}
else if (n == nLeft && n > nRight){
//string strV = str + right(nLeft - nRight);
//std::cout << strV.c_str() << " * ";
return "";
}
int nLmax = n - nLeft;
for (int i = 1; i <= nLmax; i++)
{
string strV = str + left(i);
int nRmax = nLeft - nRight+i;
for (int j = 1; j <= nRmax ; j++)
{
string strR = strV + right(j);
int nRightV = nRight + j;
make( n, nLeft+i, nRightV, strR);
}
}
return str;
}
int main()
{
int n;
std::cin >> n;
string str="";
make(n,0,0, str);
}