
如何生成所有可能的有效括号组合?
本文介绍一种利用栈数据结构生成所有有效括号组合的算法。该算法通过跟踪左括号和右括号的数量,确保生成的组合始终保持有效。
算法的核心思想是使用两个计数器分别记录左括号和右括号的数量。 当左括号数量小于给定数量 n 时,可以添加一个左括号;当右括号数量小于左括号数量时,可以添加一个右括号。只有当左括号和右括号数量都等于 n 时,才算生成一个有效的括号组合。
以下是一个 PHP 代码示例,演示了该算法的实现:
专业的室内设计师必须经过教育、实践和考试合格后获得正式资格,其工作职责是提高室内空间的功能和居住质量。:室内设计专业所提供的服务包括:室内空间的规划、研究、设计、形成以及工程实施,以改善生活质量,提高生产效率,保护社会大众的健康、安全和幸福生活。室内设计的过程就是一套系统的、协调的方法论。对信息进行研究、分析以及整合成富有创造力的过程,最后获得一个恰当的室内环境。
38
<code class="php"><?php
function generateParenthesis($n) {
$result = [];
$stack = [];
$leftCount = 0;
$rightCount = 0;
function backtrack($leftCount, $rightCount, $stack, &$result) {
if ($leftCount === $n && $rightCount === $n) {
$result[] = implode('', $stack);
return;
}
if ($leftCount < $n) {
$stack[] = '(';
backtrack($leftCount + 1, $rightCount, $stack, $result);
array_pop($stack); // 回溯:移除最后添加的左括号
}
if ($rightCount < $leftCount) {
$stack[] = ')';
backtrack($leftCount, $rightCount + 1, $stack, $result);
array_pop($stack); // 回溯:移除最后添加的右括号
}
}
backtrack($leftCount, $rightCount, $stack, $result);
return $result;
}
$n = 3;
$combinations = generateParenthesis($n);
foreach ($combinations as $combination) {
echo $combination . PHP_EOL;
}
?></code>运行这段代码,输出结果如下:
<code>((())) (()()) (())() ()(()) ()()()</code>
这个改进后的 PHP 代码使用了递归回溯的方法,更加清晰易懂,并且避免了使用位运算和字符串操作的复杂性,提高了代码的可读性和可维护性。 它直接生成有效括号组合,而无需检查无效组合。
以上就是如何生成所有可能的有效括号组合?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号