话不多说 直接上代码
/**
* 数字n 代表生成括号的对数 请你设计一个函数用于生成所有可能并且有效的括号组合JAVA
* 思路:
* 有效的括号组合即为一个左括号和一个右括号
* 每放一个左括号就可以放一个右括号
* 输入n当左括号小于n的时候就可以放置右括号
* 当左括号小于右括号才可以放置
* 右括号数里小于左括号数里才能打印右括号
* 当左括号和右括号之和==2n则输出一个结果
*/
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
String str = "";
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
backTrack(list,str,n,0,0);
System.out.print("[");
for (String s : list) {
System.out.print("\""+s+"\",");
}
System.out.println("]");
}
public static void backTrack(List<String> list, String str, int n, int left, int right) {
if (str.length() == 2 * n) {
list.add(str);
return;
}
if (left < n && right < n) {
backTrack(list, str + "(", n, left + 1, right);
}
if (right < n && left > right) {
backTrack(list, str + ")", n, left, right + 1);
}
}
}
输出结果:
思路
有效的括号组合即为一个左括号和一个右括号 * 每放一个左括号就可以放一个右括号 * 输入n当左括号小于n的时候就可以放置右括号 * 当左括号小于右括号才可以放置 * 右括号数里小于左括号数里才能打印右括号 * 当左括号和右括号之和==2n则输出一个结果