Re: [問題] 另一個亂數矩陣的問題

看板java作者 (遙遠的旅人)時間18年前 (2006/03/12 22:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/10 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《zanyking (遙遠的旅人)》之銘言: : : 其實,如果mean值一定必須得要是4的話,我覺得程式會更好寫。 : : 因為,這樣你的題目就變成: : : 我有一個8 X 5矩陣,矩陣元素為[0~1],其中0 1必須各佔一半。 : : (平均值一定得要是四,那就表示01各佔一半。) : : 且每一row 0 or 1都在3~5個之內。 : : 一種解法,就是先求1的每個row的[3,4,5]配方解。 : : 總共有五個row,那麼考慮3 4 5這三個解元素: : : 1.一個row有4個1,沒有問題。但是若存在一個ROW只有3個1,那就必定有 : : 一個row存在5個1來補。 : : 2.五個ROW可以分成兩個ROW pair解跟一個單一ROW解,這個單一ROW解必定是四個1 : : 3.兩個ROW pair解可以是 35配、53配、44配。 : 你這個演算法,會有點死板 : 如果 max-min > 2,例如 1~7,mean 還是 4 : 產生四組的話,那應該也可以三個 2,一個 6 是的,這就是我在最後說,條件是可以改成比較自由的形式的。 以這一段為例,createRowPair()回傳值的陣列長度可以是變動的。 也就是回傳一個 new int[]{2,2,2,6}給rowAns。 : : createRowPair(),一個數對產生器。可能結果三選一 : : shuffle()。一個陣列攪拌器。就是把陣列攪拌一下 : : cloneArr()。一個陣列複製器。實作可以考慮system.arraycopy() : 另外,你這樣子還要先產生數對,感覺有點... 累贅? : 我比較建議用亂述決定 range(介於 0~(max-min)/2) : 決定 range 之後,依照你的想法,一次決定兩組 : 最後落單的就賞他 mean : ==== : 如果解讀你的演算法有錯誤,或是思慮不周的 : 還請用力批,不要客氣... [擺茶點] 數對(其實不見得是兩個,依據可能的解集合大小,可以是三個、多個)的產生 ,是為了確保rowAns的結果對mean條件能有效的約制。也就是說,將必須有的 單位結果一次性的做出來才不用在後頭煩惱符不符合mean條件。 不過,這樣看起來的話,要改寫成條件比較自由的大概要從簡單的createRowPair Function 變化成class RowResultCreator了。 } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.85.116.116 ※ 編輯: zanyking 來自: 210.85.116.116 (03/12 23:32)
文章代碼(AID): #1453N9sw (java)
討論串 (同標題文章)
文章代碼(AID): #1453N9sw (java)