回 帖 发 新 帖 刷新版面

主题:求高手指点

[问题描述]给出4个1到1000之间的整数,用这4个整数,通过+、–、*的运算而得到24,运算规则如下:
1、  每个数必须使用一次,只能使用一次。
2、  运算符无优先级之分,自左向右计算。

例如:输入4个数为2,9,3,1

     则计算方法为3+9*2*1=24

[输入]:4个1到1000之间的整数
[输出]:若4个数不能产出24,则输出ERROR;
若能产生,则输出产生式(若有多个,仅能输出一个)。
例如:输入:1,1,2,2          输入:4,4,4,4

      输出:ERROR               输出:4*4+4+4=24

有没有高手能帮忙一下啊

回复列表 (共3个回复)

沙发

第一步,选出4个数用4重for,简单
第二步,+-x/ 4x4x3x3x2x2x1 就很繁琐
  好象要用 1+4x3x3x2x2 ?? 个for和select
  或者用递归吧
  哈哈,我不知道.

板凳

没有人会吗。大家帮帮忙啊

3 楼

DIM a(4) AS INTEGER
INPUT "A,B,C,D:", a(1), a(2), a(3), a(4)
FOR i = 1 TO 4
    SWAP a(1), a(i)
    FOR j = 0 TO 3 ^ 3
        s = a(1)
        m = j
        p$ = STR$(a(1))
        FOR k = 2 TO 4
            n = m MOD 3
            m = m \ 3
            SELECT CASE n
            CASE 0: s = s + a(k)
            CASE 1: s = s - a(k)
            CASE 2: s = s * a(k)
            END SELECT
            p$ = p$ + MID$("+-*", n + 1, 1) + STR$(a(k))
        NEXT
        IF s = 24 THEN
           PRINT p$; "="; s
           SYSTEM
        END IF
    NEXT
NEXT
if s<>24 then print "ERROR"

我来回复

您尚未登录,请登录后再回复。点此登录或注册