我想遍歷n個整數的每個可能的分區爲m個塊。我可以通過使用m嵌套for循環來做到這一點,但我相信這是更好的方法。將n個值拆分爲m個塊
此外,如果我的代碼可以將m作爲變量,將會有所幫助。
嵌套循環代碼看起來是這樣的:
爲A1 < - 1到n {
爲A2 < - A1到n {
。
。
。
爲上午< - 第(m-1)至n {
myFunc的(陣列[1..N],A1,A2,...,是)
}} ...}}
我想遍歷n個整數的每個可能的分區爲m個塊。我可以通過使用m嵌套for循環來做到這一點,但我相信這是更好的方法。將n個值拆分爲m個塊
此外,如果我的代碼可以將m作爲變量,將會有所幫助。
嵌套循環代碼看起來是這樣的:
爲A1 < - 1到n {
爲A2 < - A1到n {
。
。
。
爲上午< - 第(m-1)至n {
myFunc的(陣列[1..N],A1,A2,...,是)
}} ...}}
最簡單的方法是使用遞歸。但是你在評論中提到你不能使用遞歸解決方案,所以我可以提出另一種解決方案 - 使用任何方法來生成所有C(n-1,m-1)組合(我希望,有即可使用Java的非遞歸組合解決方案)。例如,對於n = 7,m = 3,您將具有C(6,2)= 15個組合 - n個星號,n-1個空格,m-1個可以停留,其他(mn)將崩潰,形成m個集羣。
*_*_*_*_*_*_*
組合010001對應於配置**_****_*
,或隔板7 = 2 + 4 + 1
當學習書寫這種方案,不存在替代讀取Knuth的:
http://www.kcats.org/csci/464/doc/knuth/fascicles/fasc3a.pdf
也許你應該發佈你的代碼。 –
你嘗試過什麼嗎?如果是這樣,請發佈該代碼! – SudoRahul
Theres沒有真正的代碼。這是針對算法類的。設置m = 8後,我做了上述事情。這只是8個嵌套for循環。我只需要在每個可能的分區上調用myFunc() – Ankit