idyu
2021-04-21 17:22:26 +08:00
只要死亡组的二进制或运算之后的值在所有组或运算里是唯一的就可以了,PHP 代码:
$r = []; //分配方案
$s = []; //所有可能发生的死亡组合数组
for($i=0b00000001;$i<=0b11111111;$i++){
if(in_array($i,$s)) continue;
$isok = true;
$ts = [$i]; //当前组可能发生的死亡组合数组
foreach($r as $n){ //遍历已有分配方案,是否有重复的死亡组合
$t = $n|$i; //死亡或运算
$ts[] = $t; //死亡放到当前数组
if(in_array($t,$s)) { //如果死亡组合已经存在 s 里,无效
$isok = false;
break;
}
}
if($isok){
$s = array_unique(array_merge($s,$ts)); //如果当前组有效,当前组的死亡数组放到总数组
$r[] = $i;
}
}
var_dump($r);
试了下应该是可以的