算法导论(五)之动态规划

版权声明:欢迎大家转载,指正。 https://blog.csdn.net/yin__ren/article/details/83243368

1. 装配线调度问题

1. 伪代码

在这里插入图片描述

2. Java 代码实现

二、钢条切割

1. 自顶向下递归实现

1. 伪代码

CUT-ROD(p,n)
	if n == 0
		return 0
	q = -1
	for i = 1 to n
		q = max(q,p[i] + CUT-ROD(p,n - i))
	return q

2. 带备忘的自顶向下法

1. 伪代码

MEMOIZED-CUT-ROD(p,n)
	let r[0..n] be a new array
	for i = 0 to n
		r[i] = -1
	return MEMOIZED-CUT-ROD-AUX(p,n,r)

MEMOIZED-CUT-ROD-AUX(p,n,r)
	if r[n] >= 0
		return r[n]
	if n == 0
		q = 0
	else 
		q = -1
		for i = 1 to n
			q = max(q,p[i] + MEMOIZED-CUT-ROD-AUX(p,n - i,r))
	r[n] = q
	return q

3. 自底向上法

1. 伪代码

BOTTOM-UP-CUT-ROD(p,n)
	let r[0..n] be a new array
	r[0] = 0
	for j = 1 to n
		q = -1
		for i = 1 to j
			q = max(q,p[i] + r[j - i])
		r[j] = q
	return r[n]

猜你喜欢

转载自blog.csdn.net/yin__ren/article/details/83243368