LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2163|回复: 3

[算法]有人问了这么个算法题

[复制链接]
发表于 2007-1-11 13:04:20 | 显示全部楼层 |阅读模式
给一个string, 该string所有character都是int, 比如"303"
再给一个target integer, 比如 6

要求在给的string中插入加法运算符号(可多个), 使其值与target相等。

在给出的例子里, 3+03 = 6



并求出插入加法符号最少的个数。

比如同样这个例子, 也可以是3+0+3 = 6, 但插入了两个符号, 不是最小值。
发表于 2007-1-11 21:14:45 | 显示全部楼层
target 多大? 不是非常大的话dp就好了吧

设target为m, 串长n

f(i, k)表示前i个digit构成k需要的最小"+"号数


f(0, 0) = 0
f(0, k) = inf, (k > 0)
f(i, k) = min(f(j - 1, k - value(j, i)) + 1), (j >= 1, k >=0)

这里value(j, i) 表示串[j, i]构成的数字
所求就是f(n, m)

时间复杂度O(m*n^2)

Please correct me if I'm wrong.
回复 支持 反对

使用道具 举报

发表于 2007-1-15 13:59:59 | 显示全部楼层
It's right
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-16 16:12:56 | 显示全部楼层
正解,,,,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表