主题:8个8
byf1980
[专家分:0] 发布于 2009-04-24 05:17:00
只能用加、减、乘、除来组合8个8组成的运算式并使其值为2000,求加减乘除法的组合方式?
请高手帮用VB来这道奥数题?
回复列表 (共19个回复)
11 楼
小令00 [专家分:1040] 发布于 2009-04-25 07:26:00
感觉你没意识到我3楼的困惑
问题要求的解答仅仅是下面的形式
8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
opn∈{+、-、×、÷}
是吗?
有没有比如下面的形式
-8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
12 楼
天天学习 [专家分:4570] 发布于 2009-04-25 08:58:00
[quote]只能用加、减、乘、除[/quote]
要求还是很清楚的。
7层循环是最自然的解法
递归的效率还不如7层循环
13 楼
byf1980 [专家分:0] 发布于 2009-04-25 09:10:00
[quote]感觉你没意识到我3楼的困惑
问题要求的解答仅仅是下面的形式
8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
opn∈{+、-、×、÷}
是吗?
有没有比如下面的形式
-8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
[/quote]
只判断的是op1,op2,...,op7;不存在(-8)op1(-8)正负符。
14 楼
小令00 [专家分:1040] 发布于 2009-04-25 19:59:00
[quote][quote]只能用加、减、乘、除[/quote]
要求还是很清楚的。
7层循环是最自然的解法
递归的效率还不如7层循环[/quote]
谢谢指点。
循环嵌套的确很直观
不过恐怕也不那么简洁
而且一般编译器对嵌套的层数是有限制的
所以如果问题更大些的话(比如不是8个8而是16个8)
这个方法可能失效
从这个意义来说思考其他的解法我认为是有意义的
当然递归的层数也有限制
但我的印象这个限制比循环嵌套要宽很多
“递归的效率还不如7层循环”的说法我觉得很难一概而论
我遇到过递归效率更高的例子
而且编程不能只考虑效率
如果把效率作为最高要求的话
函数这种东西根本就不应该存在
甚至几种控制语句都不应该用
我相信只使用if语句和goto语句的程序效率应该是最高的
15 楼
老大徒伤悲 [专家分:29120] 发布于 2009-04-25 22:17:00
递归,在代码是那个看来是很简洁,但运算效率还要比多层嵌套差一点。有点却在于只需要修改递归终止条件,就可以轻易的改成7个数或18个数。这点上嵌套修改很烦。没有本质区别。
16 楼
小令00 [专家分:1040] 发布于 2009-04-26 09:38:00
[quote]递归,在代码是那个看来是很简洁,但运算效率还要比多层嵌套差一点。有点却在于只需要修改递归终止条件,就可以轻易的改成7个数或18个数。这点上嵌套修改很烦。没有本质区别。[/quote]
即使对本题来说
我估计循环嵌套的写法也是很烦的
因为恐怕还有优先级的问题需要处理
否则我估计楼主也不会感觉“不怎么地”了
17 楼
老大徒伤悲 [专家分:29120] 发布于 2009-04-26 20:46:00
优先级的问题几乎不用考虑。
实际做法,并不在循环里面计算,每层循环仅仅构造“算式的字符串”。在最里一层循环内,一次性计算“算式字符串”的值。
18 楼
小令00 [专家分:1040] 发布于 2009-04-26 22:21:00
[quote]优先级的问题几乎不用考虑。
实际做法,并不在循环里面计算,每层循环仅仅构造“算式的字符串”。在最里一层循环内,一次性计算“算式字符串”的值。[/quote]
呵呵
让VB去做
你对
我好久不碰VB了
倒忘了VB也有许多惊人简洁的地方
19 楼
LUANJINLING [专家分:450] 发布于 2009-05-01 17:35:00
赞成12、15楼,用嵌套既直观效率又高!
我来回复