求組合數的優秀演算法!要c語言或者c 的!不要給我個數學公式!記得要優秀的!照搬公式的不給分

時間 2022-05-24 08:10:16

1樓:匿名使用者

lz的意思是不是有一些數,求全部的組合序列是吧我這裡有個程式你可以先拿去看看

#include

#include

#define n 23

#define resault 28350.2#define tt pow(2,(n)) //8388608void main()

;double sum;

char *s=new char[n+1];

cin>>j;

for(dec=j;dec=0)

*(s+i)=c+48;

else

*(s+i)=c+55;

++i;

}for(;i>i;

}使用方式在先在

#define n 23

#define resault 28350.2 這兩個地方分別替換成自己的數的個數和想要組合的和

然後在ms陣列中替換成自己的所有的數

我這個程式是用不同的組合求和的,我不知道lz想拿組合做什麼,如果也是求和的話那這個可以,如果單純想輸出所有的組合的話告訴我一下,程式得稍微改進一下

另外還有個這個演算法思路的語句改進版,速度會快一點,需要的話也告訴我一下

2樓:匿名使用者

組合公式呀, 你要不要用 遞迴 來做這個事情呢?

比如 c(m,n)化簡為比較低的c(m-1,n-1)+.....這樣來做呢?

我想這樣肯定是足夠高效的,唯一就是迭代有點多,不過全部是加法。

另外你也可以用for迴圈做吧。直接一個個的加,用他的實際意義來做,看有多少種情況,全加起來,應該也很快。

c語言組合演算法

3樓:匿名使用者

下面是完整的從n個數裡選出m個不同的數的組合數程式。所用字元數已經小於90.

double a;

main(n,m)

4樓:你不說我沒說過

排列組合的公式數學裡有

組合的公式是ncm=n!/(m!(n-m)!)但是排列組合的計算式子快捷方法不是這麼做的n*(n-1)……*(n-m+1)/m*(m-1)……*1設兩個迴圈

#include

void main

for(i=m;i>0;i--)

c=a/b;}

5樓:

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"

void main(void)

求高手看資料結構這幾個演算法怎麼弄。是c++,不是c語言!!!做好,馬上給80分!

6樓:匿名使用者

1. int getdepthx(binarytree t,elemtype x)

return 0;

}2.tnode preorderfindk(binarytree t,int k,int i)//呼叫時i初始化為0,k為所需查詢的

//返回值為所查詢的結點,然後訪問左右孩子就可以了上面2個我測試都通過了

後面2個需要用到棧,比較麻煩,你不懂的可以問我。嚴蔚敏那本的書上大部分**我都實現了,你想要我可以給你

怎樣用c++實現 組合數 的計算,例如我要計算 ncm

7樓:翔子菊子

你這個問題類似於解決超長數做四則運算的問題。比如:

111111111111111111111....111111111111111111111111111+

1111111111111111111111.....11111111111111111111111111

方法就是,c++的話,最好使用stl容器,比如vector或者list。定義3個容易,2個用於分別儲存加和被加,乘數或者被乘數,第三個容器用於儲存計算的結果,容器的每個物件儲存的是超長數的一位。每計算一位,就把結果放到結果容器中,保留進位,做下一步計算。

把上邊這個超長數相成的演算法實現完畢(也可以在網上找現成的)後,你的程式主要完成對於階乘的拆分,用while(n != 0)為迴圈條件,迴圈體就是提供n和上次計算結果給上邊的演算法繼續計算。

大概思路就這樣

一個數學公式c++程式設計

8樓:匿名使用者

#include

#include

using namespace std;

int main()

cout<< sum << endl;

return 0;}

給定求組合數公式為:c(n,m)=m!/n!(m-n)!,編一程式,輸入m和n的值 ,求c(n,m)的值 5

9樓:庫魯滋·韋伯

#include

int fabricate(int m,int n);

int multi(int m,int n);

void main()

else

printf("錯誤!重新輸入,輸入m:");}}int fabricate(int m,int n)int multi(int m,int n)

10樓:夜中月下

#include

using namespace std;

int main()

int multi(int m,int n)

請教c++ 排列組合的演算法

11樓:匿名使用者

要求說詳細點。都不知道你要得出的結果是什麼?得到幾種排列方式?還是把所有的排列組合情況都輸出?

c語言程式設計:按所給的公式計算組合數並輸出結果:cmn(m在上n在下)=n!/[(n-m)!m!]

12樓:眼鏡控控卡咩

我理解是這樣的輸入輸出,如果是這樣的輸入輸出的話,**如下:

#include

#define n 34

main()

>=0)

return 0;}

13樓:匿名使用者

#include

int main()

for(i=1;i<=n;i++)

printf("%d",sum);}

c++求3個數列排列組合演算法

14樓:匿名使用者

我是軟體專業初學者,自己寫出來的就一個有點用的:可以利用楊輝三角公式,也是組合公式:c(i,j)=c(i-1,j-1)+c(i-1,j);再用大資料陣列儲存,因為20以後資料已經變的很大,所以我用了double,這裡有我自己寫的一個函式可以參考下,不知道有沒有更好的方法

double c[n][n];

void cc()

for (int i=2;i

c[i][j]=c[i-1][j]+c[i-1][j-1];

}//小數字!

這個是c++的

15樓:天蠍小魚兒

數列是以正整數集為定義域的函式,是一列有序的數。數列中的每一個數都叫做這個數列的項.排在第一位的數稱為這個數列的第一項,排在第二位的數稱為這個數列的第二項,......

排在弟n位的數稱為這個數列的第n項。

16樓:布什不死

沒看明白你想幹啥,什麼3個數列組合演算法

17樓:匿名使用者

搞笑,給5個懸賞分就給你這麼大一個演算法?

C語言為什麼這樣求組合數有問題

f m 溢位了 就算 f m 沒溢位,由於你的變數都宣告是整數,則1 極大值等於 0。 因為n的階乘是1,m的階乘是一個很大的數,而且n m是1 20 19,是一個負數,你帶入階乘函式f,是一次都不會執行的,直接返回1,那麼你的f n f m f n m 這個式子就是 1 很大的數 1,最終的得數也...

c語言,如何求n個元素的m個組合

include using namespace std void cmb char a,int n,int m,int b,const int m int i for i n i m i b m 1 i 1 if m 1 cmb a,i 1,m 1,b,m else int j for j m 1 ...

基於C語言的DES加密演算法的實現要怎麼寫啊

首先c語言要熟悉,然後去圖書館借一本加密解密的書,要裡面有c語言des實現 的 這種書是有的,我看到過 先對加密解密的歷史及發展現狀進行介紹,然後著重對des加密的發展歷史及原理進行闡述 以上內容要多借幾本相關書綜合一下用自己的語言表達出來 然後對des的演算法寫個程式 可以利用書裡面的程式 然後執...