我正在考虑解决这个问题的方法:
生成10个点之间的三角形的所有可能性,其位置如下:
. . .
. . .
. . .
.
(就像普通手机上的键盘一样)
第一行:1 2 3
第二行:4 5 6
第三行:7 8 9
第四行:0
我正在使用PHP。我尝试使用oposite逻辑生成。 (获取所有组合并删除非三角形的所有组合,但这太复杂了)。有人有什么建议吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
我想到了以下几点:
$banned = array(5,8,10);
$array = array();
for($i=1;$i<11;$i++){
for($j=1;$j<11;$j++){
for($k=1;$k<11;$k++){
if($i != $j && $j != $k && $i != $k){
$tmp = array($i, $j, $k);
sort($tmp);
if($tmp[1]-$tmp[0] !== $tmp[2]-$tmp[1] AND $tmp !== $banned){
$array[] = $tmp;
}
}
}
}
}
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));// remove duplicates
print_r($array); // printing