Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数,用于添加或减去数字的位数_Python - Fatal编程技术网

Python函数,用于添加或减去数字的位数

Python函数,用于添加或减去数字的位数,python,Python,我的问题是,我正在尝试编写一个函数PlusMinusnum,它将读取所传递的整数,并确定是否可以用加号或减号分隔整数的数字,以形成一个计算结果为零的表达式 例如:如果num是35132,则可以按以下方式分隔数字:3-5+1+3-2,此表达式等于0 函数应该返回所用符号的字符串,因此对于本例,程序应该返回-++-。如果无法将数字表达式设置为等于零,则应返回字符串not ABLE。如果有多种方法使最终表达式等于零,则它应返回包含更多减号的方法。例如:如果num是26712,则函数应该返回-+-而不是

我的问题是,我正在尝试编写一个函数PlusMinusnum,它将读取所传递的整数,并确定是否可以用加号或减号分隔整数的数字,以形成一个计算结果为零的表达式

例如:如果num是35132,则可以按以下方式分隔数字:3-5+1+3-2,此表达式等于0

函数应该返回所用符号的字符串,因此对于本例,程序应该返回-++-。如果无法将数字表达式设置为等于零,则应返回字符串not ABLE。如果有多种方法使最终表达式等于零,则它应返回包含更多减号的方法。例如:如果num是26712,则函数应该返回-+-而不是+-+-

样本测试用例:

Input: 199
Output: not possible 

Input: 26712 
Output: -+--
我的代码:

num=int(input())
PlusMinus(num)
def PlusMinus(num):
    s=str(num)
    l=len(s)
    rs=''
    r=0
    if(l<2):
        print("not possible")
    else:
        for i in range(1,l):
            if i<2:
                r=int(s[0])-int(s[1])
                rs='-'
            else:
                if r<=0:
                    r=int(r)+int(s[i])
                    rs+='+'
                else:
                    r=int(r)-int(s[i])
                    rs+='-'
        if(r==0):
            print(rs)
        else:
            print("not possible")

这是一个有趣的问题。您的代码适用于您在文章中概述的测试用例,但在某些情况下逻辑会下降。例如,如果当前和大于0,您的代码天真地尝试添加减号,如果不大于0,则添加加号。这意味着,如果我们尝试:

945
--
459
not possible
但是,如果我们尝试,我们会得到正确的答案:

945
--
459
not possible
我们得到了一个错误的答案,很明显,4+5-9=0,所以我们希望得到+-

我解决这个问题的方法是生成所有可能的正负号组合,从--。。。以+++…结尾,按顺序循环,如果我们找到解决方案,就会中断。这种蛮力解决方案也很幼稚,就像一些分析和启发一样,我们可以消除相当多的解决方案,但它确实有效,并将提供正确的答案

代码:

测试: