主题:求助:关于填写加减运算的问题!
孤狼5926
[专家分:0] 发布于 2005-11-28 17:00:00
请哪位高手帮我解决一下这个程序!谢谢!!
下面有一个式子,左边是123456789,九个不为零的数字全出场,从小到大按自然增长顺序排列;右边就是100。
怎样在左边插入一些加号和减号,使左边的运算结果等于右边?
如:12+3-4+5+67+8+9=100
123+4-5+67-89=100
123-4-5-6-7+8-9=100
回复列表 (共7个回复)
沙发
moz [专家分:37620] 发布于 2005-11-28 17:22:00
想一想实际求解当中你是怎么想的,
把你的想法转成QB的实现过程就可以了。
板凳
codepk [专家分:2800] 发布于 2005-11-30 19:09:00
DEFLNG A-Z
DIM s AS STRING
INPUT num
FOR n = 0 TO 3 ^ 8 - 1
s = "1"
a = n
b = 1
m = 0
FOR i = 2 TO 9
c = a MOD 3
a = a / 3
SELECT CASE c
CASE 0
IF b >= 0 THEN
b = b * 10 + i
ELSE
b = b * 10 - i
END IF
s = s + CHR$(48 + i)
CASE 1
m = m + b
b = i
s = s + "+" + CHR$(48 + i)
CASE 2
m = m + b
b = -i
s = s + "-" + CHR$(48 + i)
CASE ELSE
END SELECT
NEXT
m = m + b
IF m = num THEN PRINT s; "="; num
NEXT
3 楼
moz [专家分:37620] 发布于 2005-11-30 23:23:00
[em54]太可怕了[em54]吓死人了[em54]狂汗[em54]我要一头撞死了[em54]倒[em54]
4 楼
moz [专家分:37620] 发布于 2005-11-30 23:28:00
看明白了.
9个数最多8个符号
相当于设置三进制的数,
检查每一位的标志,
为0无符号
为1加号
为2减号
这人也想得出来,
我只做过二进制位标志的,
这归隐了那么久的高手(怕都已经跑C去很久了)竟然拿三进制来做,
狂倒.狂汗.
5 楼
moz [专家分:37620] 发布于 2005-11-30 23:29:00
这样看来,那些加减乘除不是很简单?
设置四进制五进制标志位不就行了?
(哦,还要考虑优先)
6 楼
codepk [专家分:2800] 发布于 2005-12-01 11:14:00
还有人认得我这个菜鸟啊......
= =!
7 楼
孤狼5926 [专家分:0] 发布于 2005-12-05 16:12:00
这都能想的到,小弟佩服,佩服!!
谢谢各位高手!
我来回复