主题:请高手指点
&佑慧妹妹&
[专家分:660] 发布于 2007-04-14 14:57:00
从键盘输入四个自然数,请用这四个自然数组成一个不含括号的加减法混合运算题,使该题所有结果最小(但不能小于零,而且运算的中间结果也不能小于零)输出格式要符合数学算式的要求,如有多种解答,只需输出一种符合要求的表达式。
例如:输入:15 6 12 4
输出:15-12+4-6=1
回复列表 (共5个回复)
沙发
Matodied [专家分:7560] 发布于 2007-04-17 20:23:00
CLS
DATA 1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1
DIM a(4), b(4), f(3)
INPUT a(1), a(2), a(3), a(4): t = 10000
FOR i = 1 TO 4: FOR j = 1 TO 4: FOR k = 1 TO 4: FOR l = 1 TO 4
IF i <> j AND i <> k AND i <> l AND j <> k AND j <> l AND k <> l THEN
s = 0: RESTORE
FOR m = 1 TO 8
READ f1, f2, f3
s = a(i)
s = s + f1 * a(j): IF s < 0 THEN 1
s = s + f2 * a(k): IF s < 0 THEN 1
s = s + f3 * a(l): IF s < 0 THEN 1
IF s < t THEN
t = s: b(1) = a(i): b(2) = a(j): b(3) = a(k): b(4) = a(l)
f(1) = f1: f(2) = f2: f(3) = f3
END IF
1 NEXT m
END IF
NEXT l, k, j, i
FOR i = 1 TO 3
IF f(i) = 1 THEN s$ = "+" ELSE s$ = "-"
PRINT b(i); s$;
NEXT i
PRINT b(4); "="; t: END
板凳
&佑慧妹妹& [专家分:660] 发布于 2007-04-17 20:27:00
min = 10000
CLS
INPUT a, b, c, d
DIM jg(10000)
a(1) = a
a(2) = b
a(3) = c
a(4) = d
F$(1) = "+"
F$(2) = "-"
FOR a1 = 1 TO 4
FOR a2 = 1 TO 4
FOR a3 = 1 TO 4
FOR a4 = 1 TO 4
FOR f1 = 1 TO 2
FOR f2 = 1 TO 2
FOR f3 = 1 TO 2
IF a1 * a2 * a3 * a4 = 24 AND a1 + a2 + a3 + a4 = 10 THEN
IF f1 = 1 THEN jg = a(a1) + a(a2) ELSE jg = a(a1) - a(a2)
IF jg >= 0 THEN IF f2 = 1 THEN jg = jg + a(a3) ELSE jg = jg - a(a3)
IF jg >= 0 THEN IF f3 = 1 THEN jg = jg + a(a4) ELSE jg = jg - a(a4)
IF jg < min AND jg >= 0 THEN
min = jg
b(1) = a(a1)
b(2) = a(a2)
b(3) = a(a3)
b(4) = a(a4)
F(1) = f1
F(2) = f2
F(3) = f3
jg = 0
END IF
END IF
NEXT f3
NEXT f2
NEXT f1
NEXT a4
NEXT a3
NEXT a2
NEXT a1
FOR I = 1 TO 3
IF F(I) = 1 THEN PRINT b(I); "+"; ELSE PRINT b(I); "-";
NEXT
PRINT b(4); "="; min
END
这样编对不对呢?
3 楼
&佑慧妹妹& [专家分:660] 发布于 2007-04-17 20:27:00
最麻烦的方法对吧
4 楼
Matodied [专家分:7560] 发布于 2007-04-20 17:41:00
!i!I!II!I!II!II!IiiiIi1iii1i1i1!1Iii1i!ii1i1Ii!i
5 楼
&佑慧妹妹& [专家分:660] 发布于 2007-04-30 19:32:00
给了啊
我来回复