作者zanyking (遥远的旅人)
看板java
标题Re: [问题] 另一个乱数矩阵的问题
时间Sun Mar 12 23:30:06 2006
※ 引述《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)