欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

24 点博弈及其算法--否则 f(S) = ∪ f( ( ( S-{r1, r2}) ∪ {r} ) 对于每个 r = r1 + r2 , r1 - r2 , r1 × r2 , r1 ÷ r2 (r2 ≠ 0) 和 r1, r2 取二进制中 S 的所有元素的组成。

最编程 2024-04-27 22:44:11
...


定义1说明:要计算集合S中的元素通过四则混合运算所能得到的所有值,我们只需要任取 S 中的两个元素 r1 , r2 ,分别计算 r1 , r2 的加减乘除运算,然后用
所得的结果与 S 中剩下的其他数字进行四则混合运算。只要取遍所有的 r1 ,r2 ,最后得到的所有结果的并集就是 S 中的元素通过四则混合运算所能得到的所
有值的集合。
根据上述定义,在本问题中,集合 S 就是由输入中给定的6个正整数组成的集合,
题目所求就是找出 f(S) 中小于或等于目标数的最大数。


定义2:给定两个多重集合 S1 , S2,定义
        comb( S1, S2 ) = ∪ { r1+r2 , r1-r2, r1×r2, r1÷r2(r2≠0) }       (1.1)
其中 ( r1 , r2 ) ∈ S1 × S2。

定义2实际上定义了两个集合中的元素两两进行加减乘除运算所能得到的结果集合。


定理1:对于有理数组成的多重集合 S ,如果 S 至少有两个元素,则
        f(S)=∪ comb( f(S1), f(S - S1) )                      (1.2)
其中 S1 取遍 S 的所有非空真子集。