链接:https://leetcode-cn.com/problems/generate-parentheses/
使用回溯(DFS)枚举所有可能生成的情况,剪去所有左括号数量小于右括号数量的子过程。
java代码:
class Solution {
List<String>ans = new ArrayList();
public List<String> generateParenthesis(int n) {
backtrack("",0,0,n);
return ans;
}
public void backtrack(String curr, int left, int right,int n)
{
if(right>left||left>n||right>n)
return;
if(curr.length()==n*2)
{
ans.add(curr);
return;
}
backtrack(curr+"(",left+1,right,n);
backtrack(curr+")",left,right+1,n);
}
}