java算式拼接_Java-算式填符号

题目:

某批警察叔叔正在进行智力训练:

1 2 3 4 5 6 7 8 9 = 110

请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。请你利用计算机的优势,帮助警察叔叔快速找到所有答案。每个答案占一行。形如:

12+34+56+7-8+9

123+4+5+67-89

......

分析:

如果采用循环嵌套的话,因为循环层数不固定,不太好写。所以采用递归思想,从后往前依次插入符号计算,递归深度为8(8个空),每个空有3种选择‘+’、‘-’、‘ ’,从最后一个空开始算起(从第一个空开始算不方便):如果是加号或减号,建一个子串存放符号和符号后面的数字,把子串和以前已有串拼接起来再传参数递归;如果是空(四声),把空左面和右面的数字连起来(具体连接方式是先把数字转成串,再把这两个串拼接起来转为整型)。递归的本质就是试探和回溯,当无法继续时,将其复原。

源代码:

0c70e3d06626048b5cf1a54dd2e25ec9.png

运行结果:

804eee1e3b1281b20a9e0e767eae6c90.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值