【发布时间】:2017-03-23 18:06:02
【问题描述】:
我想打印给定数组中子范围的所有组合。我有一个包含 y 个元素的数组,我想从中打印所有连续子范围的组合。
约束是:每个子范围应该至少有 2 个元素,并且子范围中的每个元素应该是连续的。它应该共享每个元素的相同边框。
例如,我们有一个由 7 个元素组成的数组 [11,12,13,14,11,12,13]
所以,子范围组合的总数将[7 * (7-1) /2] = 21
所以,输出将是这样的:
11,12
12,13
13,14
14,11
11,12
12,13
11,12,13
12,13,14
13,14,11
...
11,12,13,14 and so on (total 21 combination as per above array)
我们不应该打印任何不连续的组合。示例:[11,12,14] 不是有效的组合,因为它跳过了中间的元素“13”。
我能够打印包含 2 个元素的组合,但我很难打印超过 2 个元素的组合。
以下是我目前尝试过的。
$data=array("11","12","13","14","11","12","13");
$totalCount=count($data);
for($i=0;$i<$totalCount;$i++){
if(($i+1) < ($totalCount)){
echo "[".$data[$i].",".$data[$i+1]."]<br>";
}
}
【问题讨论】:
-
@LucasMendes 它不重复。我希望组合是连续的。就像上面的例子一样,[11,12,14] 不是有效的组合,因为它不是不连续的,并且会跳过中间的元素“13”。每个组合中的元素应共享相同的边框。
-
@ViditMody,在您的示例中,您正在打印所有组合。您应该编辑您的问题以包含正确的示例输出。