C/C++ 括号生成(Leetcodes)
题目具体要求:
给出n个代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合
列如,给出n=3,生成结果为:
((()))
(()())
(())()
()(())
()()()
代码如下:(通过递归实现)
#include <iostream>
#include <string>
using namespace std;
void fun(string &s,int num1,int num2){
if(num2==0)
{
cout<<s<<endl;
return;
}
if(num1>0)
{
string s_tmp=s+'(';
fun(s_tmp,num1-1,num2);
}
if(num2>0&&num2>num1)
{
string s_tmp=s+')';
fun(s_tmp,num1,num2-1);
}
}
int main(){
string s;
int n;
cin>>n;
s+='(';
fun(s,n-1,n);
return 0;
}
//@cow
希望能帮到你,欢迎在下面留言。