回溯法
Posted naonaoling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回溯法相关的知识,希望对你有一定的参考价值。
22. 括号生成
递归回溯:
1)结束点:右括号有n个,生成一条path,返回
2)如果右括号小于n个,对于当前可以有两种继续的方式:
2.1)左括号不足n个,加一个左括号继续递归
2.2)右括号小于左括号,加一个右括号继续递归
如何体现回溯的思想?递归return就相当于回到了上一个结点。
相似的题目:路径等等(反回一个list,一个list里面的子元素单独求解。)
1 class Solution { 2 List<String> res = new ArrayList<>(); 3 public List<String> generateParenthesis(int n) { 4 gene("", 0, 0, n); 5 return res; 6 } 7 public void gene(String path, int left, int right, int max){ 8 if(right == max){ 9 res.add(path); 10 return; 11 } 12 if(left < max){ 13 gene(path+"(", left+1, right, max); 14 } 15 if(right<left){ 16 gene(path+")", left, right+1, max); 17 } 18 } 19 }
以上是关于回溯法的主要内容,如果未能解决你的问题,请参考以下文章