括号-回溯

package huisu;

import java.util.ArrayList;
import java.util.List;

public class generateKuohao {
    /**
     * 括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。
    思路:1.先左括号
       2.左括号数量最大n
        3.左比右大加右括号
        4.右达到最大字符串添加进list,返回
*
@param args */ public static void main(String[] args) { List<String> list=generateParenthesis(3); int x=0; } public static List<String> generateParenthesis(int n) { List<String> list=new ArrayList<>(); helper("", 0, 0, list, n); return list; } public static void helper(String s,int left,int right,List<String> list,int n){ if(right==n){ list.add(s); return; } if(left<n){ helper(s+'(',left+1,right,list,n); } if(left>right){ helper(s+')',left,right+1,list,n); } } }
原文地址:https://www.cnblogs.com/jieyi/p/14092946.html