- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 41286
- 在线时间
- 小时
|
楼主 |
发表于 2008-5-21 15:21:56
|
显示全部楼层
关于这个题目,用五个数字情况作为例子,比如现在有一个表达式
$a-(b*c-(d+e))$
这个表达时最外层计算是加减计算,而且,我们发现可以通过去掉部分括号将其他一些加减也提升到最外层,比如上面表达式可以写成:
$a-b*c+d+e$
在这些括号去除以后,我们可以发现,所有在最外层的加减计算都是可以交换计算顺序的,比如上面这个表达式同下面几个都等价:
$a+d+e-b*c$
$-b*c+a+d+e$
所以如果允许第一个数字前面也添加正负号,那么所有最外层计算中,我们只需要考虑每一项的符号,而不用管它们的顺序。
而如果需要考虑第一项不允许添加负号,由于各项之间顺序可以任意安排,所以只要至少有一项是正的,我们就可以表达出来。
所以像上面的表达式,我们可以看成分组
$(b*c, a, d, e)$
里面,每一组都添加正号或负号然后求和的所有可能,其中不允许所有的都选择负号。
所以上面分组用加减号连接最多有15种不同的可能$2^4-1$
同样,如果表达式最外层运算是乘除运算,我们考虑表达式
a/((b+c)/(d*e))
同样,我们可以把它改写成
a/(b+c)*d*e
类似前面,我们把这个表达式看成分组
$(a, b+c, d, e)$
通过乘除运算组合到一起中的一种,组合过程中,每个数可以选择用作乘数或除数,但是不能够所有的数都选择为除数。
所以上面的分组用乘除号连接最多有$2^4-1$种不同的连接方式.
现在我们来看第三种特殊的表达式
a/(b-c)+d*e
这个表达式同
d*e-a/(c-b)
也是等价的,但是这种等价关系前面的分析过程无法得出,主要原因在于对于某个连乘式:
$x_1x_2..x_t$和$y_1y_2...y_t$
如果两个连乘式中对应项绝对值都相同,那么最后乘积也必然相等或互为相反数。
所以我们需要对所有结果为互为相反数的项做特殊处理:
可以发现,对于一个分组的加减组合中我们允许第一项也添加负号,那么对于每个表达式,我们总可以找到和它互为相反数的一项。
所以我们可一将互为相反数的项看成等价的表达式,最后计算出总数目,然后在总数目上乘2就可以了(因为对于最后的表达式,也是每个表达式,其相反数必然可以构造出来)
而对于最终的表达式,如果它的相反数不能表示出来(不允许第一项添加负号的情况下),容易看出,只能表达式中没有用过减号。所以我们可以通过分别计数情况1:第一项允许添加负号;情况2:没有使用任何负号的表达式 |
|