排列組合(組合數)

2022-06-09 10:45:08 字數 2015 閱讀 4513

儒雅隨和的小趙閒暇時很喜歡古典文學,比如金……金銀角大王和孫悟空。

話說悟空一行在西天取經路上遇上了妖怪金角大王、銀角大王,把唐僧、八戒、沙僧、白馬,連行李一道擄去。兩個大王有幾個法寶,其中乙個是個魔葫蘆,妖怪叫誰的名字,誰應一聲,就被吸進葫蘆,兩個時辰化為膿水。

孫悟空來鬥妖魔,魔王叫「孫悟空」他應了,結果被吸進葫蘆。他設計跑了出來,重新打到魔王洞口。為了欺矇魔王他還在葫蘆裡,就自稱是孫悟空的兄弟「者行孫」。

魔王出來迎戰,重新祭起葫蘆法寶,叫「者行孫」。「行者想:『我真名字叫孫行者,起的鬼名字叫者行孫,真名字可以裝得,鬼名字裝不得』。卻又忍不住應了他一聲,颼地被吸進葫蘆裡。原來那寶貝,那管什麼名字真假,但綽個應的氣兒,就裝了他。

小趙在讀到上面的內容時想到了乙個問題,乙個名字隨便更改順序的話,能構成多少種呢?如bee有三種,分別是bee,ebe,eeb。小趙忙著閱讀古典文學,所以將這個問題拋給了你,請你幫他寫乙個程式計算結果。

輸入本題有多組測試資料,處理到檔案結束。

每組測試資料乙個字串,佔一行,長度小於1000,由a~z組成。

輸出

每組資料輸出乙個整數,代表不同排列的數量,結果可能很大請對1e9+7進行取模。

樣例輸入 copy

bee

success

樣例輸出 copy

3

420題目大意:就是給你乙個字串問能組成幾種不同的字串

題目解析:

因為字母是重複的,所以結果不是所有字母的排列數。

以success舉例,有3個s、2個c、1個u和1個e。

三個s可以用c(7,3)種不同方式,從7個位置選3個位置放置

剩下4個空位可以用c(4,2)種不同方式放置c

再用c(2,1)種方式放置u

最後c(1,1)種方式放置e

**實現可以直接預處理打出組合數的表,然後計算

也可以通過優化的遞推來節省空間。

組合數打表模板:

//

組合數打表模板,適用於n<=3000

//c[i][j]表示從i個中選j個的選法。

long

long

c[n][n];

void get_c(int

maxn)

}

ac**:

#pragma gcc optimize(2)#include

using

namespace

std;

inline

int read()

typedef

long

long

ll;const

int maxn = 1e5+10

;char

a[maxn];

ll b[maxn];

const

int n=1500;//

組合數打表模板,適用於

//c[i][j]表示從i個中選j個的選法。

ll c[n][n];

const ll mod=1e9+7

;void get_c(int

maxn)

}int

main()

ll t=strlen(a);

sort(a,a+t);

ll j=0

;

for(int i=0;i)

j++;

}ll sum=1

;

for(int i=0;i)

printf(

"%lld\n

",sum%mod);

}return0;

}

c 排列組合排序 排列組合 組合數專題

書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...

排列與組合 組合數學

note 把物件排成一條線。用 p n,r 表示 n 元素集合的 r 排列的數目,則 eg 對於集合,則p n,r 中的n 3,假設取r 3,則p 3,3 3 2 1 6,即abc acb bac bca cab cba這6種。note 把物件排成乙個圓。設s是n元素集合。集合s的乙個組合通常表示集...

排列 組合數學

定義 從n個不同的元素中,取出m個不同元素,按照順序排成一列,叫做從n個元素取出m個元素的乙個排列。我們將從n個不同的元素取出m個元素所得到得不同排列數,叫做從n個元素取出m個元素的排列數 記為a n,m 其中n m a n,m n n 1 n m 1 n n m 定義 n個不同元素中取m個不同元素...