楊輝三角(組合數) 排列組合

2021-10-10 16:56:27 字數 1431 閱讀 4181

(一道虐我的數學題,今天太累了,就簡單聊聊思想核心)

題目如下:

特斯拉公司的六位密碼被輕鬆破解後,引發了人們對電動車的安全效能的懷疑。李華聽聞後,自己設計了一套密碼:假設安全系統中有n個儲存區,每個儲存區最多能儲存存2個種類不同的訊號(可以不儲存任何訊號)。有0和1這兩種訊號,其中0有a個,1有b個,單獨乙個0或1算乙個訊號。現要將這些訊號儲存在儲存區中,0和1可以不用全部儲存,一種不同的儲存方案經過李華處理後就將是一串不同的密碼。現在給出n,a,b,求可能的不同儲存方案的個數。

ac**:

#include

#include

#include

using namespace std;

#define ull unsigned long long

#define n 1000

ull s[n]

[n];

intmain()

} ull ans =0;

for(

int i=

0;i<=a;i++

)for

(int j =

0; j <= b; j++

) cout << ans << endl;

return0;

}

先聊聊楊輝三角,我們有知道楊輝三角是長啥樣的,但都不知到楊輝三角的性質,其中能夠用來解決本題的是:楊輝三角中第 i 行,第 j 列的數就等於 從 i-1 個數中砸出 j-1 個數的方案,也就是c(j-1,i-1)。

所以我們可以把**寫成這樣:

#include

using namespace std;

int cb[50]

[50];

intmain()

}for

(int i=

0;i<

10;i++)}

return0;

}

這樣如果要呼叫c(n,m),就直接輸出cb[n][m]就行了。

聊回本題思路,只能說數學題真是妙啊!

隔板法高中數學全還給老師了

我們先退一步。k 個球分給 n 個盒子。我們假設,題目要求變為每個盒子至少要分得乙個球,如何解決呢?

k 個球之間形成了 k-1 個間隙,我們將 n-1 個隔板插入間隙中,隔板就將球分為了 k份,符合假設。這樣從 k−1 個間隙中選出 n-1 個插入隔板,再進行計算組合數。

但是現在要解決的情況是盒子可以分不到球。這樣我們通過一步化歸,轉換為上面的情況:新增 n個球,使每個盒子至少有乙個球。這樣分完後只要將每個盒子多拿的乙個球收回,便回到原情況了。

大佬的思路妙就妙在增添n個隔板上。這樣就可以製造出乙個無論什麼情況都可以用c的情況,又不會影響答案的精度。

組合數(楊輝三角)

原來組合數和楊輝三角是有關係的 楊輝三角上的每乙個數字都等於它的左上方和右上方的和 除了邊界 第n行,第m個就是,就是c n,m 從0開始 所以以後求楊輝三角或者組合數都可以用到下面的遞推公式 includeconst int n 2000 5 const int mod int 1e9 7 int...

組合數 楊輝三角

不難想到,我們可以用二維陣列來實現。上 include intmain i,j scanf d n for i 1 i n i a i 1 1 for i 2 i n i for i 1 i n i printf n return0 這樣我們實現了楊輝三角。更近一步,我們得到 用遞迴的辦法來實現也可...

楊輝三角與組合數

相信大部分oier已經對楊輝三角很熟悉了,我第一次做楊輝三角的時候是剛學完for迴圈,有一道題是列印楊輝三角的,那時起,我就對這個幾何圖形的構造方式充滿了興趣。最近,在老師的引導下,我學習了有關楊輝三角的乙個小秘密。本文將簡單介紹楊輝三角與組合數之間的聯絡。如果將 a b n a b n a b n...