圖1 Combinations Demo
貼上截圖是讓你能夠跟上我思路的最好方式。圖1是一個(gè)Windows@-based應用程序的截圖,它演示了組合的應用。正如你所看見(jiàn)的,組合就是一組元素的無(wú)序子集。在這個(gè)例子中我們有5個(gè)元素——Adam,Barb,Carl,Dave和Eric ——我只對3個(gè)元素的組合感興趣。從5個(gè)元素中一次性選出3個(gè),共有10種不同組合:
{ Adam, Barb, Carl }, { Adam, Barb, Dave }, . . . { Carl, Dave, Eric } |
注意,無(wú)序子集的意思是,{Carl,Barb,Adam}和{Adam,Barb,Carl}是等價(jià)的,兩者都代表同一個(gè)子集。圖1還說(shuō)明了一點(diǎn),在用給定的元素集合大小和子集大小生成組合時(shí),我們還需要計算出不同組合的總數。
數學(xué)中組合的定義是:n是從整數0到n-1的集合,從4個(gè)元素的集合中一次選取2個(gè)的6種組合即是:
{ 0, 1 }{ 1, 2 } { 0, 2 } { 1, 3 } { 0, 3 } { 2, 3 } |
正如我之前所說(shuō),組合在軟件測試、開(kāi)發(fā)、管理等各種領(lǐng)域中都有著(zhù)很大的作用。組合在數學(xué)領(lǐng)域中是古典而又深刻的,但我發(fā)現有很多程序員對它的理解都不夠徹底,現有網(wǎng)絡(luò )中的一些與組合相關(guān)的代碼不是寫(xiě)錯了,就是執行效率低下。
原文轉自:http://www.uml.org.cn/Test/201004214.asp