这是在与 friend 交谈时出现的,我想我应该在这里问,因为这是一个有趣的问题,并且希望看到其他人的解决方案。
任务是编写一个函数 Brackets(int n) 打印从 1...n 开始的所有 well-formed 括号的组合。对于 Brackets(3),输出将是
()
(()) ()()
((())) (()()) (())() ()(()) ()()()
最佳答案
试了一下...还有 C#。
public void Brackets(int n) {
for (int i = 1; i <= n; i++) {
Brackets("", 0, 0, i);
}
}
private void Brackets(string output, int open, int close, int pairs) {
if((open==pairs)&&(close==pairs)) {
Console.WriteLine(output);
} else {
if(open<pairs)
Brackets(output + "(", open+1, close, pairs);
if(close<open)
Brackets(output + ")", open, close+1, pairs);
}
}
递归利用了这样一个事实,即您永远不会添加比所需对数更多的左括号,并且您永远不会添加比左括号更多的右括号..
关于c# - 查找格式正确的括号的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52253967/