给 n 对括号,写一个函数生成所有合适的括号组合。
2018-03-30 21:46
323 查看
题目
给 n 对括号,写一个函数生成所有合适的括号组合。思路
给出一个整数n,那么生成的合法括号串的长度是2 * n,那么运用递归去枚举每个位置上的可能出现的字符(,),枚举的时候要注意,当前位置可以放(,但是能不能放)就要看到目前为止放了多少个),如果(的个数比)多,那么当前位置就可以放),这其实和用栈验证括号串的合法性的思想是一样的。原文链接
代码
public class Main { static ArrayList<String> list = new ArrayList<>(); public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); dfs(0,0,"",n); for (int i = 0; i < list.size(); i++) System.out.print(list.get(i) + (i != list.size() - 1 ? "," : "\n")); } static void dfs(int l, int r, String str, int n){ if(str.length()==n*2){ list.add(str); return; } if(l<n) dfs(l+1, r, str+'(', n); if(r<n&&l>r) dfs( l, r+1, str+')', n); } }
相关文章推荐
- 给定n对括号,编写一个函数来生成正确括号的所有组合。
- 给定n对括号,编写一个函数来生成正确括号的所有组合。
- c::编写一个函数,它从标准输入读取C 源代码,验证所有的花括号都能正确的成对出现
- 面试题:给定一个的电话号码,问生成的所有字母组合(容易记的电话号码)
- 6_8_5在order结构体中添加一个函数.该结构体返回一个格式化的字符串,以合适的值替换用尖括号扩起来的条目
- 22.生成所有的括号组合
- 给一个无括号的布尔表达式求所有组合数
- ABAP--一个不错的函数模块的文档生成程序
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- 写正确函数需要注意的地方:给定一个十进制整数N,计算从1开始到N的所有整数出现的“1”的个数
- 求一个数组里面所有和等于m的组合
- 生成集合的所有组合 - Gray Code
- 生成一个文件夹内的所有文件的文件列表(转)
- 前端的小玩意(9.4)——做一个仿360工具箱的web页面(自动生成所有图标,对图标添加响应逻辑)
- 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都成对出现
- 输出n对括号的所有有效排列组合
- 编写一个函数,有如下函数原型: 函数:int continum(char *intputstr,char *outputstr). 给一个字符串,要求找到里面连续的串,并且串的长度是所有连续串中
- 打印所有匹配括号组合
- 调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。