排列組合(包含所有組合可能和指定元素個數的組合)

2021-09-13 15:56:01 字數 2402 閱讀 3724

當元素個數少時...

元素組合方式

f(1)

a(a)

f(2)

a,b(b)(ba)(a)

f(3)

a,b,c

(c)(cb、cba、ca)(b、ba、a)

f(4)

a,b,c,d

(d)(dc、dcb、dcba、dca、db、dba、da)(c、cb、cba、ca、b、ba、a)

f(n)

... ...

由上表可以得出,

n 個元素的所有組合方式 = 第 n 個元素 + 第 n 個元素與 n-1 個元素所有組合方式的兩兩組合 + n-1 個元素所有組合。

如果用 f(n) 表示 n 個元素的所有組合,an 表示第 n 個元素,那麼,

f(n) = an + an.f(n-1) + f(n-1) (n>1)

// 輸出所有組合

function recursion_combination(array $arr)elseif(count($temp) == 1)else

foreach ($substr as $value)

}return $result;

}// 輸出指定元素個數的組合

function combination_specified(array $arr,$num)

}return $result;

}// 函式呼叫

$arr = array("a","b","c","d");

$allresult = recursion_combination($arr);

$specifiednums = combination_specified(recursion_combination($arr),2);

echo "所有組合:";

foreach ($allresult as $value)

echo "

"."指定元素個數的組合:";

foreach ($specifiednums as $value)

所有組合:a、ab、abc、abcd、abd、ac、acd、ad、b、bc、bcd、bd、c、cd、d、

指定元素個數的組合:ab、ac、ad、bc、bd、cd、

如果給出的元素中,不都是單個字元 ,例如 。那麼使用上述方法不能得出指定元素個數的組合。

思路說明:

將組合結果存放在乙個二維陣列裡面,結構如下:

$result = array

([0] => array

([0] => (組合結果)

[1] => (組合元素1)

[2] => (組合元素1)

... ...

)

那麼,

獲取所有組合時,只要輸出 $result[$i][0] 即可;

獲取 k 個元素的組合,判斷 $result[$i] 的長度,如果 count($result[$i]) == k+1,輸出 $result[$i][0]。

// 所有組合

function recursion_combination_plus(array &$arr)elseif(count($temp) == 1)elseelse

}array_push($result,$data1);

}foreach ($substr as $value)

}return $result;

}// 指定元素個數組合

function combination_specified_plus(array $arr,$num)

}return $result;

}$arr = array("a","12","#%$");

$allresult = recursion_combination_plus($arr);

$specifiednums = combination_specified_plus(recursion_combination_plus($arr),2);

echo "所有組合:";

foreach ($allresult as $value)

echo "

"."指定元素個數的組合:";

foreach ($specifiednums as $value)

所有組合:a , a12 , a12#%$ , a#%$ , 12 , 12#%$ , #%$ , 

指定元素個數的組合:a12 , a#%$ , 12#%$ ,

c 排列組合排序 排列組合 組合數專題

書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...

排列組合(組合數)

儒雅隨和的小趙閒暇時很喜歡古典文學,比如金 金銀角大王和孫悟空。話說悟空一行在西天取經路上遇上了妖怪金角大王 銀角大王,把唐僧 八戒 沙僧 白馬,連行李一道擄去。兩個大王有幾個法寶,其中乙個是個魔葫蘆,妖怪叫誰的名字,誰應一聲,就被吸進葫蘆,兩個時辰化為膿水。孫悟空來鬥妖魔,魔王叫 孫悟空 他應了,...

演算法練習 排列組合之組合和

給出一組不同的正整數序列和乙個目標值,求出全部可能的組合,使得組合裡全部元素和為目標值。要求 1 每乙個組合裡的元素依照公升序排列。2 輸出組合裡不含有反覆的組合。3 輸入序列中的整數能夠多次使用。舉例 輸入 目標值為7 輸出。為了讓輸出元素按公升序排列,可對輸入序列進行排序。同這裡我們使用遞迴的方...