演算法組合
1. 求一個組合公式的演算法
1.選擇的數字不重復,有 3 =4 種方法
C4
2.選擇的數字中有一個重復的,有 2 1 =6*2=12種方法
C4 * C2
3.選擇的數字中有兩個重復的,有 1 = 4種方法
C4
總共有4+12+4=20種方法
從12個數字中選3次,有12*11*10/6+2*12*11/2+12=220+132+12=364種方法
2. 組合演算法.
看你的數學學的如何了,
轉化為數學模型,然後在用某種計算機語言敘述出來就可以了.
3. 求組合演算法.
思路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;}
4. 全組合的演算法
總共有26*10*26種可能,如果把沒一個A、B、C的取值進行編號,那麼序號與A、B、C的關系可以是:
序號I=26*26*B+26*A+C=26(26B+A)+C
那麼:
C=I%26
A=(I-C)/26%26
B=(I-C-26A)/26/26
用一重循環來實現上述組合的枚舉,程序如下:
main(){
int i,a,b,c;
for (i=0;i<26*10*26;i++){
c=i%26;
a=(i-c)/26%26;
b=(i-c-26*a)/26/26;
printf("%c%c%c ",a+'A',b+'0',c+'A');
}
}
這實際上是使用的26進制數來實現的,這個26進制三位數是BAC,值等於I,當有更多變數的時候,方法是類似的。
5. 組合的演算法
高中數學題?
排列組合可以算,不過要分情況
具體如下
3個盒子放球
當3個盒子內有0個球相同(即0個種族相同,也就是ZTP各一族)時只有一種情況
當3個盒子內有2個球相同時(即有一個種族相同),因共有3個種族,於是要從3個種族內選一個出來做相同的族,再從剩下2種族內選一個做落單的族,又因為沒順序,是組合問題
即C31*C21=6
當3個盒子內有3個球相同時,有3種可能,即都是Z,都是T,都是P,故也是3種
綜上共有1+3+6=10種
6. 什麼是組合演算法和組合問題
給你解釋下 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)
不知道我這樣說你能不能聽明白
7. 演算法;1-9的所有組合
數字: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
可能:0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
每個數字都只有兩種可能:出現或不出現(0或1)
所以所有的可能性有2的9次方,也就是512種