double 发表于 2022-7-22 17:47:47

非常经典的DP啊,学到了

shenji 发表于 2022-8-2 12:48:57

之前的代码运行起来之后发现,有时因为busy偷学不成功,但table里已经删掉了匹配到的语句导致偷学成功率下降,因此稍微改动了一下

function tx_cp(str)
    local tx_str = tostring(str)
    local str_i_max = tonumber(string.len(str))
        local tx_s = {}
        local i = 1
    while i <= tonumber(str_i_max - 1) do
                table.insert(tx_s,string.sub(str,i,i+1))
                i = i + 2
        end
        for k, v in pairs(tx_pfm) do
                if levenshtein(tx_pfm,tx_s) < tonumber(GetVariable("tx_xsd")) then
                        k = k + 1
                        if tx_pfm == nil then
                                break
                        end
                elseif levenshtein(tx_pfm,tx_s) >= tonumber(GetVariable("tx_xsd")) then
                        --Note("第"..k.."招匹配成功")
                        --Send("touxue "..GetVariable("tx_id"))
                        --table.remove(tx_pfm, k)
                              --if #tx_pfm == 0 then            --table的元素数量为0,说明已经学完,即可结束

                                        --Send("response action 偷学完毕")
                        Send("touxue "..GetVariable("tx_id"))
                        SetVariable("tx_k", k)         --将匹配成功的语句的key值储存起来,等到偷学成功时再删除
                        break
                        end
                end
end

再写一个触发:

match:^你从\S+身上偷学到了一招!$
send:
table.remove(tx_pfm, tonumber(GetVariable("tx_k")))
SetVariable("tx_k", 0)
print(#tx_pfm)
if #tx_pfm == 0 then
Send("response action 偷学完毕")
end


------------------------------------------------------------------

galaxyxing 发表于 2022-8-2 13:11:44

动规大师!
Orz

galaxyxing 发表于 2022-10-29 22:41:22

galaxyxing 发表于 2022-8-2 01:11 PM
动规大师!
Orz

动态规划
DP
页: 1 [2]
查看完整版本: Mush偷学任务招式对比