
采用动态规划的方法
思路:n组括号的组合 = (n-1)组括号组合的基础上再加一对括号,这对括号将这n-1组括号分割成了(a)b的形式,其中,a,b是n-1组括号组合的分割。
function generateParenthesis_V2($n) {
if ($n == 0) {
return [];
}
// dp[n]表示n对括号的所有组合
$dp = [];
$dp[0] = [''];
$dp[1] = ['()'];
// ($dp['q'])$dp['p'] q+p = i - 1
for($i=2; $i<=$n; $i++) {
$temp = [];
for ($j=0; $j<=$i-1; $j++) {
foreach ($dp[$j] as $str1) {
foreach ($dp[$i-1-$j] as $str2) {
$temp[] = '('.$str1.')'.$str2;
}
}
}
$dp[$i] = $temp;
}
return $dp[$n];
}


227

被折叠的 条评论
为什么被折叠?



