php
function backtrack($nums, $subset, $index, &$results) {
// 判断当前状态是否满足条件
// 如果满足条件,将当前状态添加到结果集中
if ($index >= count($nums)) {
$results[] = $subset;
return;
}
// 不选取当前位置的元素,继续递归调用
backtrack($nums, $subset, $index + 1, $results);
// 选取当前位置的元素,继续递归调用
$subset[] = $nums[$index];
backtrack($nums, $subset, $index + 1, $results);
// 回溯,撤销上一步选择的元素
array_pop($subset);
}
function subsets($nums) {
$results = [];
backtrack($nums, [], 0, $results);
return $results;
}
$nums = [1, 2, 3];
$subsets = subsets($nums);
foreach ($subsets as $subset) {
echo implode(', ', $subset) . "\n";
}
顶一下
(0)
0%
踩一下
(0)
0%
- 相关评论
- 我要评论
-