導航:首頁 > 源碼編譯 > 演算法組合

演算法組合

發布時間:2022-01-18 09:05:35

Ⅰ 關於全組合演算法

參照我的回答:VBA 6~15個數中,任選6個數排列組合:http://..com/question/289742264.html
調整一下遞歸函數Private Sub zuhe(L As Integer, M As Integer)調用的M參數取值(可重復與不可重復有一點區別)

Ⅱ 組合的演算法

高中數學題?
排列組合可以算,不過要分情況
具體如下
3個盒子放球
當3個盒子內有0個球相同(即0個種族相同,也就是ZTP各一族)時只有一種情況
當3個盒子內有2個球相同時(即有一個種族相同),因共有3個種族,於是要從3個種族內選一個出來做相同的族,再從剩下2種族內選一個做落單的族,又因為沒順序,是組合問題
即C31*C21=6
當3個盒子內有3個球相同時,有3種可能,即都是Z,都是T,都是P,故也是3種
綜上共有1+3+6=10種

Ⅲ 求組合演算法.

思路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;}

Ⅳ 組合演算法.

看你的數學學的如何了,
轉化為數學模型,然後在用某種計算機語言敘述出來就可以了.

Ⅳ 演算法;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種

Ⅵ 全組合的演算法

總共有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,當有更多變數的時候,方法是類似的。

Ⅶ 什麼是組合演算法和組合問題

給你解釋下 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)
不知道我這樣說你能不能聽明白

Ⅷ 求一個組合公式的演算法

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,4,5,8是第幾個組合,首先原始程序語言演算法如下:


for(i=1;i<=9-4;i++)
{
for(j=i+1;j<=9-3;j++)
{
for(k=j+1;k<=9-2;k++)
{
for(m=k+1;m<=9-1;m++)
{
num++;
}
}
}
}

以上是求得總組合數的原始演算法,現假設存在變數p1,p2,p3,p4,其初始值分別為1,2,3,4分析以上演算法,當第一個數p1變為2時,此時p2,p3,p4已經進行了一次C(8,3)==56的全組合,當運算56次的時候,數組組合狀態為2,3,4,5,接著,p1不變,p2從3,運行到4的時候,表示p3,p4,進行了一次C(6,2)=15的全組合,此時組合狀態為2,4,5,6接著,p1,p2,不變,p3符合要求,本身不變,接著,p4從6運行到8,進行了2次運算,故,得出,2,4,5,8是第56+15+2=73次排列。

第二個問題:已知存在數列1-9,求第73次排列數組是什麼,

答:依舊設存在變數p1,p2,p3,p4,初始狀態為1,2,3,4,計算,當p1,由1變為2時,進行了C(8,3)=56次運算,如果p1繼續變為3,則,進行了56+C(7,3)=56+35=91>73要求值,故,此時我們確定了p1的值為2,此時的組合狀態為;2,3,4,5,接著計算p2,當p2,由3變為4時,進行了C(6,2)=15次運算,如果p2繼續由4,變為5,則繼續進行了C(5,2)=10次運算,計算56+15+10=81>73故確定了p2為4,而不能是5;接著,方法同上,得到p3=5,p4=8。完成!

閱讀全文

與演算法組合相關的資料

熱點內容
工作三年的大專程序員 瀏覽:726
java畢業設計文獻 瀏覽:140
籌碼集中度指標源碼 瀏覽:478
listsortjava 瀏覽:183
plc閃光電路編程實例 瀏覽:299
socket編程試題 瀏覽:204
華為的伺服器怎麼設置從光碟機啟動 瀏覽:868
程序員真的累嗎 瀏覽:326
學信網app為什麼刷臉不了 瀏覽:873
天蠍vs程序員 瀏覽:992
單片機下載口叫什麼 瀏覽:188
程序員的道 瀏覽:926
雲伺服器不實名違法嗎 瀏覽:558
怎樣查看文件夾圖片是否重復 瀏覽:995
文件怎麼導成pdf文件 瀏覽:808
打開sql表的命令 瀏覽:103
安卓手機如何面部支付 瀏覽:38
天元數學app為什麼登錄不上去 瀏覽:824
明日之後為什麼有些伺服器是四個字 瀏覽:104
安卓系統l1是什麼意思 瀏覽:26