我想制作一个类似下面例子的程序。
input : 2
output :
(1) , (2);
(1,2), (2,2);
input : 3
output :
(1),(2),(3);
(1,2),(1,3),(2,3);
(1,2,3)
公式为2 ^ n-1 。
我只尝试过只使用。我希望得到所有可能性。
喜欢:答案 0 :(得分:0)
在PHP
上使用自定义功能:
$inputValues = range(1,3); //here you set your input(2 or 3 or what you want)
$result = array();
function variations($inputValues, $level, &$result, $current = array()) {
for($i = 0; $i < count($inputValues); $i++) {
$new = array_merge($current, array($inputValues[$i]));
if($level == 1) {
sort($new);
if (!in_array($new, $result)) {
$result[] = $new;
}
} else {
variations($inputValues, $level - 1, $result, $new);
}
}
}
for ($i = 0; $i<count($inputValues); $i++) {
variations($inputValues, $i+1, $result);
}
foreach ($result as $arr) {
echo '('.join(",", $arr) . ')';
}
Result is:
(1)(2)(3)(1,1)(1,2)(1,3)(2,2)(2,3)(3,3)(1,1,1)(1,1,2)(1,1,3)(1,2,2)(1,2,3)(1,3,3)(2,2,2)(2,2,3)(2,3,3)(3,3,3)