N对括号的所有的有效组合

    xiaoxiao2022-07-08  205

    所谓括号的有效组合就是整体’ (’ 和 ‘)’ 的数量相等,并且在任何位置都需要保证 ‘(’ 的数量大于等于 ‘)’ 的数量,这个就是我们算法的主要思想了。

    #include<bits/stdc++.h> using namespace std; vector<string> res; void dfs(string s,int l,int r){ if(l==0&&r==0){//l==r==0说明 s 已经满足了有效括号组合的两个条件了,保存下来 res.push_back(s); return; } if(l< r){**//l<r说明当前位置之前'('的数量已经大于')'的数量了,可以加')'** dfs(s+')',l,r-1); } if(l>0){***//l>0说明可以还可以加'('*** dfs(s+'(',l-1,r); } } int main(){ int n; cin>>n; dfs("",n,n); for(auto item:res) cout<<item<<endl; }

    最新回复(0)