首页 > 试题广场 >

如何添加运算符

[编程题]如何添加运算符
  • 热度指数:2234 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给出一个数字N,对于数字序列 1,2,3 ... N。现在在其中插入“+”, "-", " ",使得表达式的和为M。" "的含义是把相邻的两个数字组成一个数。例如:1 + 2 3 - 4,含义是:1 + 23 - 4 = 20。
给出N和M,求出所有合法的序列的个数。

输入描述:
两个整数N,M ( 1 <= N <= 7, -100 <= M <= 100)


输出描述:
合法序列的个数
示例1

输入

7 0

输出

6

说明

样例中的六种合法序列
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7
def cal(s, a, m, i):
    s += str(a[i])
    if i == len(a)-1:
        resu = eval(s)
        return 1 if resu == m else 0
    return cal(s+'+', a, m, i+1) + cal(s+'-', a, m, i+1) + cal(s+'', a, m, i+1)
n,m = map(int, input().split())
a = list(range(1, n+1))
print(cal('', a, m, 0))

发表于 2020-07-16 10:43:00 回复(0)
def methods(s, n, m, step):
    s += str(step)
    if step == n :
        if eval(s) == m:
            return 1
        else:
            return 0
    return methods(s+"+", n, m, step+1) + methods(s+"-", n, m, step+1) + methods(s, n, m, step+1)

n, m = map(int, input().split())
print(methods("", n, m, 1))

发表于 2019-08-22 22:17:47 回复(0)