
按贪婪算法思路:从树中选择树中值最大的的分支走,依些类推,计算结果为14=4+7+3
function newTree(data)
local t = {}
t.data = data
t.treeList = {}
return t
end
function addTree(root, tree)
local treeList = root.treeList
treeList[#treeList+1] = tree
end
function getMaxGreedy(tree)
local num = tree.data
local treeList = tree.treeList
local function sort(tree1, tree2)
return tree1.data > tree2.data
end
table.sort(treeList, sort)
if #treeList > 0 then
local v = 0
if #treeList > 0 then
v = getMaxGreedy(treeList[1])
else
v = t.data
end
num = num + v
end
return num
end
local t1 = newTree(1)
local t2 = newTree(2)
local t3 = newTree(3)
local t4 = newTree(4)
local t5 = newTree(5)
local t6 = newTree(6)
local t7 = newTree(7)
local t8 = newTree(8)
local t9 = newTree(9)
local t10 = newTree(10)
local root = newTree(4)
addTree(t4, t9)
addTree(t4, t6)
addTree(t2, t10)
addTree(t2, t1)
addTree(t5, t4)
addTree(t5, t8)
addTree(t7, t3)
addTree(t7, t2)
addTree(root, t5)
addTree(root, t7)
print(getMaxGreedy(root))
贪婪算法求解树结构最大值
本文介绍了一个使用Lua实现的贪婪算法案例,通过构建树形结构并选取最大值节点来逐步求解整个树的最大路径值。文章详细展示了如何定义树节点、添加子节点以及实现贪婪策略获取最优解。
1410

被折叠的 条评论
为什么被折叠?



