速算24点

输入: 4个整数

输出: 由这4个整数经过加减乘除得到24的所有算法

分析:

使用穷举,这些组合有多少?

一个一般的算法总可以表示成加括号的情况。

如 3*8/(8/8) 可写成 ((3*8)/(8/8))

即忽略优先级,两两外加括号。

((OXO)X(OXO)) 这样的形式,那么,括号有多少种放法呢?

(((OXO)XO)XO)

((OX(OXO))XO)

((OXO)X(OXO))

(OX(OX(OXO)))

(OX((OXO)XO))               共5种


OXOXOXO 之 X的放法

由于可重复放,如乘法用了两次。共4*4*4种放法。可用一个4进制数表示。

如方法53 = 3314 表示 除除减

 OXOXOXO 之 O的放法

是否可以参考X的放法呢? 可惜O不能重复,因为数字不能重复使用。想了些其他方法,未果。

只好用表了,代码里zuhe[]数组。

 

 

 贴代码 java


主代码


分数类


posted @ 2009-03-25 12:19  ..  阅读(1480)  评论(0)    收藏  举报