招商银行笔试

第二题,给定一个字符串,在里面加加号或减号,使之结果为指定数k,1<=字符串长度<=12,1<=k<=1e4,感觉就是个dfs,然后dp也可,但是始终拿不了分,有做的朋友知道哪里有trick吗
@取个名字真烦人提醒,加符号不一定非得把数字字符串切割成单个字符,所以dfs(go版本)应该长这样(有bug欢迎指出):
dfs(str, 1, int(str[0]-'0'), k, &ans)
func dfs(str string, i, cur, k int, ans *int) {
  if i == len(str) {
      if k == cur {
          *ans++
      }
      return
  }
  dfs(str, i+1, 10*cur+int(str[i]-'0'), k, ans)
  dfs(str, i+1, cur+int(str[i]-'0'), k, ans)
  dfs(str, i+1, cur-int(str[i]-'0'), k, ans)
}#招商银行信用卡中心2020春招##招商银行#
全部评论
+1,第一个5分钟ac,第二个回溯剪枝剪得我脑子炸了,最后放弃了。蹲坑等大佬
点赞 回复 分享
发布于 2020-04-08 21:19
是dfs,题目的意思是可以在任意地方插入+/-,不一定必须分割成单个数字,比如12345,不一定要分割成1 2 3 4 5,也可以是12  3  45。
点赞 回复 分享
发布于 2020-04-08 21:20
你也是实习吗?还是春招?
点赞 回复 分享
发布于 2020-04-08 21:44
楼主,我也是0%,你试试leetcode494,我在leetcode里超时了,但是这题长度小于12不会超时
点赞 回复 分享
发布于 2020-04-08 22:34
我是ac50%,然后剩下的超时,感觉你的问题应该是计算顺序的问题,我是用dfs得到全部可能的算式后再开始计算,如果有n个数字,我是在n-1个间隔里添加字符,有三种可能'+','-','',形成的算式
点赞 回复 分享
发布于 2020-04-09 09:33
造孽了,这个字符打不出来,就是三种字符,加号、减号、空字符
点赞 回复 分享
发布于 2020-04-09 09:35
学到了,原来dfs有三种情况,第一种是两个数字间用+,第二种是用-,第三种是什么都不加,就相当于第一个数字*10+第二个数字。 哎当时想到了数字间可能没有符号,就是不知道咋表示出来...
点赞 回复 分享
发布于 2020-04-09 16:21

相关推荐

coffrar:全都是已读😅沟通一千五百多个了
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务