// 下午一同事提出乙個有趣的問題:一行字母(數字符號也行),中間插入特定字元(字元型別不定,我這裡用加號),字母的順序不能變,如下:
ab => a+b 1種
abc=>a+bc;
ab+c;
a+b+c 3種
abcd=>a+bcd;ab+cd;a+b+cd;abc+d;a+bc+d;ab+c+d;a+b+c+d 7種
一次類推。
搞了差不多一下午,終於搞出來了;說說我的思路:先將字串(一行字母)分割成陣列,再對陣列進行隨機組合排列(組合排列中用+連線);形成「可以排列的多少種陣列」;對新陣列迴圈,迴圈中將每個元素的+替換成"" 將替換後的元素與abcd比較不一樣的就刪除;**如下:
public function countnum()else {
$res = "$ar[0]$ar[1]";
$res = "$ar[0]+$ar[1]";
return $res;
//***************end*********************
效果:abarray
( [1] => a+b
)abc
arrayabcd( [1] => a+bc
[2] => ab+c
[3] => a+b+c
)
arrayabcde( [1] => a+bcd
[2] => ab+cd
[3] => a+b+cd
[4] => abc+d
[5] => a+bc+d
[6] => ab+c+d
[7] => a+b+c+d
)
array// 這也許不是最簡便的方法,歡迎各位指導高效簡潔的方法,在此感謝啦!!( [1] => a+bcde
[2] => ab+cde
[3] => a+b+cde
[4] => abc+de
[5] => a+bc+de
[6] => ab+c+de
[7] => a+b+c+de
[8] => abcd+e
[9] => a+bcd+e
[10] => ab+cd+e
[11] => a+b+cd+e
[12] => abc+d+e
[13] => a+bc+d+e
[14] => ab+c+d+e
[15] => a+b+c+d+e
)
排列 組合數學
定義 從n個不同的元素中,取出m個不同元素,按照順序排成一列,叫做從n個元素取出m個元素的乙個排列。我們將從n個不同的元素取出m個元素所得到得不同排列數,叫做從n個元素取出m個元素的排列數 記為a n,m 其中n m a n,m n n 1 n m 1 n n m 定義 n個不同元素中取m個不同元素...
數學基礎 排列組合
a開頭的叫排列,c開頭的叫組合。排列a n,m n n 1 n m 1 n n m n為下標,m為上標,以下同 組合c n,m p n,m p m,m n m n m 排列 permutation 數學的重要概念之一。有限集的子集按某種條件的序化法排成列 排成一圈 不許重複或許重複等。從n個不同元素...
排列組合數學 子串行
題目描述 給定乙個小寫字母字串t 求有多少長度為m的小寫字母字串s滿足,t是s的乙個子串行 不需要連續 輸入描述 第一行乙個字串t 第二行乙個正整數m 輸出描述 輸出答案對109 7取模的值 示例1輸入a2 輸出51 說明長度為2的裡面有a的串有51種 備註 1 t m 105 列舉終點,前面的除了...