小编Jea*_*aud的帖子

动态规划 - 杆切割

前几天我正在看CLRS只是为了让我的思绪更加清醒,并且碰到了经典的杆切割问题.

经典的自下而上解决方案如下:

1: let r[0..n] be a new array
2: r[0] = 0
3: for j = 1 to n
4:    q = -1
5:    for i = 1 to j
6:       q = max(q, p[i] + r[j-i])
7:    r[j] = q
8: return r[n]
Run Code Online (Sandbox Code Playgroud)

现在有一些我一直在思考的东西.为什么我们继续在L.6上重用p [i]?我的意思是让我们说我们有j = 4然后它会计算以下组合:

1 + 3
2 + 2
3 + 1
4 + 0
Run Code Online (Sandbox Code Playgroud)

什么是真正计算"3 + 1"两次的重点.我建议的不是使用p []而只使用r []并停在楼层(j/2).

1: let r[0..n] be a new array
2: r[0] = 0
3: for j …
Run Code Online (Sandbox Code Playgroud)

algorithm

6
推荐指数
1
解决办法
3103
查看次数

我什么时候应该使用kd树?

前几天,我正在读关于kd-trees的事.我一直在寻找一个具体而简单的情况,这种数据结构可能很有用.有没有人有这样的例子?

algorithm kdtree

5
推荐指数
2
解决办法
3029
查看次数

编写一个正则表达式字符串匹配函数,支持'.','*'和'.*'

标题非常明确,下面是几个样本输入/输出.请注意,所使用的正则表达式应该从字符串的开头到结尾匹配.

'abc' =~ 'abc' (match)
'abc' =~ 'a*bc' (match)
'aaaaaaabc' =~ 'c*bc' (no match)
'aaaaaaabc' =~ 'a.*bc' (match)
'abbbbaaaaaabc' =~ 'ab*a*b*c' (match)
'abbbbaaaaaabc' =~ 'ab*a*h*bc' (match)
'bbd' =~ 'b*bbd' (match)
'bbd' =~ '.*bbd' (match)
'bbd' =~ '.*cbd' (no match)
'' =~ '.*' (match)
Run Code Online (Sandbox Code Playgroud)

我的实现位于:

https://github.com/jpbillaud/piexposed/blob/master/string/string_match_regexp.c

现在我想知道是否有人会考虑使用DP,有限自动机或其他任何方法来解决这个问题.

c regex algorithm

2
推荐指数
1
解决办法
1672
查看次数

标签 统计

algorithm ×3

c ×1

kdtree ×1

regex ×1