㈠ 求組合演算法.
思路1(沒實現):這題越做越明白,最後一個全組合問題我沒解決好~我是這樣想的:求出全排列-->對於所有全排列所有單個元素一個組合(共有N個元素就N個組合)-->對於所有全排列所有元素組成(N-1)個可能的組合-->對於所有全排列所有元素組成(N-2)個可能的組合-->-->到所有元素一個組合這樣做有個問題是重復問題,因為是對所有元素組合,思路2:求出這幾個元素的所有可能組合,然後在輸出結果的時候遍歷所有組合,將所有組合聯合起來和輸入的數據一致。比如:{a,b}組合,遍歷所有組合後加上一個{c}即可和輸入一致每個組合都為一行,然後去匹配以下我思路1的未代碼:/*思路:得到輸入字元串不重復全排列,然後逐層組合*/#include#includeusingnamespacestd;/*將輸入轉字元串格式*/voidInput2Str(char*dest,char*input){intlen=strlen(input);for(inti=0;i&result){if(*begin=='\0'){result.push_back(str);}else{for(char*pCh=begin;*pCh!='\0';pCh++){if(IsSwap(begin,pCh)){swap(*begin,*pCh);Perm(str,begin+1,result);swap(*begin,*pCh);}}}}voidprint(vector&result){cout::iteratoriter=result.begin();intlen=strlen((*iter).c_str());for(;iter!=result.end();++iter){cout>input;Input2Str(inputStr,input);vectorresult;Perm(inputStr,inputStr,result);print(result);return0;}
㈡ 什麼是組合演算法和組合問題
給你解釋下 A(4,6)的意思 A(4,6)的意思是對6個數中的4個做組合的情況個數
首先,第一個數的位置有多少種情況?是6種,在這之後第二個數呢,因為第一個數占據了一個位置所以是5種 以此類推後面是4、3種 那為什麼是6*5*4*3呢 而不是6+5+4+3呢 因為這四個事件不是互斥的
C(4,6) = A(4,6) / (4 * 3 * 2 * 1) 為什麼要除以4 * 3 * 2 * 1呢 C(4,6)的意思是從6個數中取出4個數 但是不要求排序 這點是和A是有區別的 因為A(4,6)不僅取出了4個數而且對4個數進行了排序 也就是說在C(4,6)中每次從6個數中取出4個數的情況數是1 而在A(4,6)中的情況數卻是A(4,4) 所以這個比例關系是 1:A(4,4)的關系 所以要除以A(4,4) 也就是C(4,6) = A(4,6) / A(4,4)
不知道我這樣說你能不能聽明白
㈢ 組合演算法是什麼
組合演算法指計算對象是離散的、有限的數學結構的組合學問題的演算法。組合演算法的用途十分廣泛。從方法學的角度,組合演算法包括演算法設計和演算法分析兩個方面,關於演算法設計,已經總結出若干帶有普遍意義的方法和技術,包括動態規劃、回溯法、分枝限界法、分治法、貪心法等。
組合演算法的設計仍然是一門藝術需要高度的技巧和靈感。演算法分析的任務是分析演算法的優劣,主要是討論演算法的時間復雜性和空間復雜性。它的理論基礎是組合分析,包括計數和枚舉。計算復雜性理論,特別是NP完全性理論,與組合演算法是緊密相關的。
(3)組合的演算法擴展閱讀:
組合演算法要解決的問題只有有限種可能,在沒有更好辦法時總可以用窮舉搜索的辦法來解決,即逐個檢查所有可能的情況。當情況較多時這樣做是很費時的。
實際上並不需要機械地檢查每一種情況,常常有可能提前判斷出某些情況不可能取到最優解,從而可以提前舍棄這些情況。這樣使「隱含地」檢查了所有情況,既減少了搜索量,又保證不漏掉最優解。
㈣ 求組合計算公式
6個設備里取三個設備是C(6,3)=20。
5個賬號里取一個是C(5,1)=5。
然後組合總數是20*5*5*5=2500
所以正常組合一共是2500種組合。但這里明顯沒排除你說的情況,你說的排除的情況比較復雜。需要分布分批次進行排除。
㈤ 排列組合公式及演算法
P(m,n)=n*(n-1)(n-2)...(n-m+1)=n!/(n-m)!【n個元素中,取m個的排列】
C(m,n)=P(m,n)/P(m,m)=n(n-1)(n-2)...(n-m+1)/m!
=n!/[(n-m)!*m!].【n個元素中取m個元素的組合】
滿意請把我列為最佳答案~~~~
㈥ 組合c的計算公式是什麼
排列組合c的公式:C(n,m)=A(n,m)/m!=n!/m!(n-m)!與C(n,m)=C(n,n-m)。(n為下標,m為上標)。例如C(4,2)=4!/(2!*2!)=4*3/(2*1)=6,C(5,2)=C(5,3)。
排列組合c計算方法:C是從幾個中選取出來,不排列,只組合。
C(n,m)=n*(n-1)*...*(n-m+1)/m!
例如c53=5*4*3÷(3*2*1)=10,再如C(4,2)=(4x3)/(2x1)=6。
注意事項:
1、不同的元素分給不同的組,如果有出現人數相同的這樣的組,並且該組沒有名稱,則需要除序,有幾個相同的就除以幾的階乘,如果分的組有名稱,則不需要除序。
2、隔板法就是在n個元間的n-1個空中插入若干個隔板,可以把n個元素分成(n+1)組的方法,應用隔板法必須滿足這n個元素必須互不相異,所分成的每一組至少分得一個元素,分成的組彼此相異。
3、對於帶有特殊元素的排列組合問題,一般應先考慮特殊元素,再考慮其他元素。