求排列的個數

題目:

        計算3個A,2個B可以組成多少種排列的問題(如:AAABB, AABBA)是《組合數學》的研究領域。但有些情況下,也可以利用計算機計算速度快的特點通過巧妙的推理來解決問題。下列的程序計算了m個A,n個B可以組合成多少個不同排列的問題。


(1)  當有m個A和n個B時,總的排列數爲(m+n)!/m!/n!;

(2)  由於不知道m和n哪個大,故兩個值都減1,最後知道m和n中其中一個爲0;

(3) 當有m-1個A和n-1個B時,總的排列數爲(m+n-2)!/(m-1)!/(n-1)!;

(4)這樣兩個的關係爲:fun(m,n) = fun(m-1,n-1)*(m+n)*(m+n-1)/m/n;


#include<iostream> 
using namespace std;

int fun(int m ,int n){
	if(m == 0 || n == 0){
		return 1;
	}
	else
	    return fun(m - 1 , n - 1)*(m + n)*(m+n-1)/m/n;
}

int main(){
	cout<<fun(3,2);
	return 0;
}


發佈了44 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章