Re: [问题] 请问一个穷举法的问题 (java)

楼主: yauhh (小y宝贝)   2013-04-24 20:47:21
※ 引述《azcd (钢铁般的决心)》之铭言:
: 请问各位大大
: 倘若随机得到一组set(内容为等下要运用的顺序,与内容值)如下:
: {1_A, 2_B, 2_C, 3_D}
: 想要转换变成一个ArrayList是 {ABD, ACD}
: 请问该怎么样转换呢?
: 谢谢!
给个很简短的答案. 当你有 p 个 1 号物品, q 个 2 号物品以及 r 个 3 号物品,
可以先乘法求得共有 p * q * r 个合并物,以 {1_a, 1_b, 1_c, 2_d, 2_e, 3_f, 3_g}
而言,共有 3 * 2 * 2 = 12 个合并.
然后可以列12个条目,每个条目有3栏,接着,就是填空游戏. 第一栏共有 3 个物品
a, b, c 可填,要填满 12 条,所以每个物品填 4 条:
a _ _ b _ _ c _ _
a _ _ b _ _ c _ _
a _ _ b _ _ c _ _
a _ _ b _ _ c _ _
接着,分别在 a, b, c 各个范围中填 d, e, 那就要想,先用 d, e 填满 a 的 4 条,
然后用 d, e 填满 b 的 4 条, 然后用 d, e 填满 c 的 4 条:
a d _ b d _ c d _
a d _ b d _ c d _
a e _ b e _ c e _
a e _ b e _ c e _
然后, f, g 分别填满 a-d, a-e, b-d, b-e, c-d, c-e 等等 6 个部份:
a d f b d f c d f
a d g b d g c d g
a e f b e f c e f
a e g b e g c e g
前后的意思就是,一开始先知道有 12 条,第 1 项物品有 3 种,所以以 4 为区间长度.
每个区间填同一样物品,下一个区间填下一样物品.
再来, 4 区间长度对第 2 项来说就是有 4 条的意思,第 2 项物品有 2 种,所以以 2
为区间长度.
最后, 第 3 项物品有 2 种, 要填满第 2 项物品的区间条目 2 条, 所以以 1 为区间
长度.

Links booklink

Contact Us: admin [ a t ] ucptt.com