Python函数,用于添加或减去数字的位数
我的问题是,我正在尝试编写一个函数PlusMinusnum,它将读取所传递的整数,并确定是否可以用加号或减号分隔整数的数字,以形成一个计算结果为零的表达式 例如:如果num是35132,则可以按以下方式分隔数字:3-5+1+3-2,此表达式等于0 函数应该返回所用符号的字符串,因此对于本例,程序应该返回-++-。如果无法将数字表达式设置为等于零,则应返回字符串not ABLE。如果有多种方法使最终表达式等于零,则它应返回包含更多减号的方法。例如:如果num是26712,则函数应该返回-+-而不是+-+- 样本测试用例:Python函数,用于添加或减去数字的位数,python,Python,我的问题是,我正在尝试编写一个函数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,所以我们希望得到+-
我解决这个问题的方法是生成所有可能的正负号组合,从--。。。以+++…结尾,按顺序循环,如果我们找到解决方案,就会中断。这种蛮力解决方案也很幼稚,就像一些分析和启发一样,我们可以消除相当多的解决方案,但它确实有效,并将提供正确的答案
代码:
测试: