第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在PHP中查找數(shù)組的子集

在PHP中查找數(shù)組的子集

慕的地6264312 2019-09-03 19:34:32
我有一個帶屬性的關系模式(ABCD)。我也有一套功能依賴。現(xiàn)在我需要確定R屬性的所有可能子集的閉包。這就是我被困的地方。我需要學習如何在PHP中查找子集(非重復)。我的數(shù)組存儲方式如下。$ATTRIBUTES = ('A', 'B', 'C', 'D').所以我的子集應該是$SUBSET = ('A', 'B', 'C', 'D', 'AB', 'AC', AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'BCD', 'ABCD')代碼不應該是大的東西,但由于某種原因,我無法理解它。
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

你想要的功率集$attributes?這就是你的問題所暗示的。


這里可以找到一個例子(引用完整性)


<?php 

/** 

* Returns the power set of a one dimensional array, a 2-D array. 

* [a,b,c] -> [ [a], [b], [c], [a, b], [a, c], [b, c], [a, b, c] ]

*/ 

function powerSet($in,$minLength = 1) { 

   $count = count($in); 

   $members = pow(2,$count); 

   $return = array(); 

   for ($i = 0; $i < $members; $i++) { 

      $b = sprintf("%0".$count."b",$i); 

      $out = array(); 

      for ($j = 0; $j < $count; $j++) { 

         if ($b{$j} == '1') $out[] = $in[$j]; 

      } 

      if (count($out) >= $minLength) { 

         $return[] = $out; 

      } 

   } 

   return $return; 


查看完整回答
反對 回復 2019-09-03
?
墨色風雨

TA貢獻1853條經(jīng)驗 獲得超6個贊

使用php array_merge我們可以有一個很好的短powerSet函數(shù)


function powerSet($array) {

    // add the empty set

    $results = array(array());


    foreach ($array as $element) {

        foreach ($results as $combination) {

            $results[] = array_merge(array($element), $combination);

        }

    }


    return $results;

}


查看完整回答
反對 回復 2019-09-03
?
一只萌萌小番薯

TA貢獻1795條經(jīng)驗 獲得超7個贊

這是一個回溯解決方案。


給定一個返回輸入集的所有L-lenght子集的函數(shù),找到從L = 2到數(shù)據(jù)集輸入長度的所有L-lenght子集


<?php


function subsets($S,$L) {

    $a = $b = 0;

    $subset = [];

    $result = [];

    while ($a < count($S)) {

        $current = $S[$a++];

        $subset[] = $current;

        if (count($subset) == $L) {

            $result[] = json_encode($subset);

            array_pop($subset);

        }

        if ($a == count($S)) {

            $a = ++$b;

            $subset = [];

        }

    }

    return $result;

}




$S = [ 'A', 'B', 'C', 'D'];

$L = 2;



// L = 1 -> no need to do anything

print_r($S);


for ($i = 2; $i <= count($S); $i++)

    print_r(subsets($S,$i));


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 1062 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號