2013-10-15 24 views
-1

我的教授給我們的遞歸算法如下解釋尋找一組數字的排列:怎麼我的教授想出這個算法分析遞歸情況下?


enter image description here


當他(T(M + 1),N -1))這是從哪裏來的?爲什麼是m + 1和n-1?我真的很困惑,如該從何而來。

+0

http://programmers.stackexchange.com/ –

+0

順便說一句 - 告訴教授認爲,該置換生成器是低效的。你可以'T(M,N)=新臺幣(M + 1,N - 1)'很容易(我有這種發電機的漂浮在這附近有一些變化)。 – Dukeling

回答

3

正如他所說的,m代表Pn當前大小代表S大小,每次遞歸調用你從S刪除電話號碼,並把它添加到P,這樣你的當前排列的大小增加了1 (m+1)和可供選擇的數字增加了置換的數量由1(n-1)下降

注意,它是由n如您在S執行此操作爲每個數字乘以。

0

注意,指出部分:

mPn長度是S

大小,然後在printperm(P, S),你打電話printperm((P,i), S-{i})

因此,當遞歸時,我們將添加一個元素到P,並從S刪除元素。

因此m將由一個和n增加將減少一個,因此我們得到T(m+1, n-1)

我希望幫助。

相關問題