Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
Algorithm 添加+;/-使数值字符串在0中求值的步骤_Algorithm - Fatal编程技术网

Algorithm 添加+;/-使数值字符串在0中求值的步骤

Algorithm 添加+;/-使数值字符串在0中求值的步骤,algorithm,Algorithm,给定一个由数字组成的字符串,添加+或-符号使表达式值为0。返回表达式 比如说, 123=>1+2-3=0 173956=>17+39-56=0 我没有任何线索来解决这个问题,除了暴力的方式 有什么建议吗?你可以用很多方法来解决它,例如使用递归方法,如果你把它组织成一棵树,这种方法会变得很明显 e、 g.123 由于一个数字后面可以有两个不同的符号(+|-): 1 / \ + - / \ 2 2 / \

给定一个由数字组成的字符串,添加+或-符号使表达式值为0。返回表达式

比如说,

123=>1+2-3=0

173956=>17+39-56=0

我没有任何线索来解决这个问题,除了暴力的方式


有什么建议吗?

你可以用很多方法来解决它,例如使用递归方法,如果你把它组织成一棵树,这种方法会变得很明显

e、 g.123

由于一个数字后面可以有两个不同的符号
(+|-)

        1
       / \
      +   -
     /     \
    2       2   
   / \     / \
  +   -   +   -
  |   |   |   |
  3   3   3   3

你可以用很多方法来解决它,例如使用递归方法,如果你把它构造成一棵树的话,这种方法会变得很明显

e、 g.123

由于一个数字后面可以有两个不同的符号
(+|-)

        1
       / \
      +   -
     /     \
    2       2   
   / \     / \
  +   -   +   -
  |   |   |   |
  3   3   3   3

这是一个搜索问题。必须在解决方案空间中执行搜索。 假设我们从“123”字符串开始,在这一点上,我们可以在“1”之后添加+或-符号,结果得到“1+23”或“1-23”。通过在下一个字符后添加符号,可以进一步拆分每个变体。因此,所有可能的符号添加将形成树状结构-解决方案空间。您的算法必须在此结构中搜索解决方案。我想A*可以用来做这个

画出解决方案空间的漂亮的ASCII图,你们只需要搜索它的解决方案。简单的广度优先搜索或深度优先搜索可以完成这项工作,但我认为如果解决方案空间很大,速度会很慢


此外,我认为可以利用解决方案空间的特性找到更优化、更具体的解决方案,例如,它是树状结构

这是一个搜索问题。必须在解决方案空间中执行搜索。 假设我们从“123”字符串开始,在这一点上,我们可以在“1”之后添加+或-符号,结果得到“1+23”或“1-23”。通过在下一个字符后添加符号,可以进一步拆分每个变体。因此,所有可能的符号添加将形成树状结构-解决方案空间。您的算法必须在此结构中搜索解决方案。我想A*可以用来做这个

画出解决方案空间的漂亮的ASCII图,你们只需要搜索它的解决方案。简单的广度优先搜索或深度优先搜索可以完成这项工作,但我认为如果解决方案空间很大,速度会很慢


此外,我认为可以利用解决方案空间的特性找到更优化、更具体的解决方案,例如,它是树状结构

问这个问题可能会更好。你有没有看动态规划来解决这个问题?我尝试过动态规划,但要得到一个最优的子结构有点困难。你可以通过使用偶数/奇数测试(首先将所有数字除以它们的gcd)来减少一些可能性。最后的奇数位数一定是偶数。也许问这个问题会更好。你有没有看动态规划来解决这个问题?我尝试过动态规划,但要得到一个最优的子结构有点困难。你可以通过使用偶数/奇数测试来减少一些可能性(首先将所有位数除以它们的gcd)。最后的奇数位数一定是偶数。谢谢,但我认为Anders K遗漏了一个分支,(+|-| concat),对吗?是的,如果是这种情况,解空间将是一个图。谢谢,但我认为Anders K遗漏了一个分支,(+|-| concat),对吗?是的,如果是这种情况,解空间将是一个图。