问题描述
要求根据括号对数,生成所有情况的括号形式,比如3对括号会有以下形式:
- ( ( ( ) ) )
- ( ( )( ) )
- ( ( ) )( )
- ( )( ( ) )
- ( )( )( )
小伙伴们需要自取,有帮助的话可以点个赞~
注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。
代码实现
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void output(string, vector<string> &, int, int);
int main()
{
string sub = " ";
vector<string>list;
output(sub, list, 3, 3);
for (int i = 0; i < list.size(); i++)
{
cout << list[i] << endl;
}
system("pause");
return 0;
}
void output(string sub, vector<string>&list, int left, int right)
{
if (left > right)
return;
else
{
if (left > 0)
{
output(sub + "( ", list, left - 1, right);
}
if (right > 0)
{
output(sub + " )", list, left, right - 1);
}
if (left == 0 && right == 0)
{
list.push_back(sub);
return;
}
}
}