招商银行笔试
第二题,给定一个字符串,在里面加加号或减号,使之结果为指定数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春招##招商银行#
经@取个名字真烦人提醒,加符号不一定非得把数字字符串切割成单个字符,所以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春招##招商银行#