1888: 生成括号(等级考试3级 2021-09 T5)

题目:

 

 程序:

#include<bits/stdc++.h>
using namespace std;
int n;
string s1;
void dfs(int l,int r)
{
    if(l==n&&r==n)
    {
        cout<<s1;
        cout<<endl;
        return;
    }
    if(l<r) return;//当l<r时停止此次递归
    if(l<=n)//一定先做l的判断
    {
        s1+="(";
        dfs(l+1,r);
        s1.pop_back();//回溯
    }
    if(r<=n)
    {
        s1+=")";
        dfs(l,r+1);
        s1.pop_back();//回溯
    }
}
int main()
{
    cin>>n;
    dfs(0,0);
    return 0;
}

 

posted @ 2022-02-10 11:28  王浩泽  阅读(39)  评论(0编辑  收藏  举报