用LUA(和C++)刷PAT (Advanced Level) ——1063 Set Similarity

local readf = io.read('*a'):gmatch('%d+')

local readFunc = function()
    return tonumber(readf())
end

local N = readFunc() sets = {}

for i = 1, N do
    sets[i] = {}
    sets[i].count = 0
    local Tcount = readFunc()
    for j = 1, Tcount do
        number = readFunc()
        if not sets[i][number] then
           sets[i].count = sets[i].count + 1
        end
        sets[i][number] = true
    end
end

local K = readFunc()

function printSimilarity(set1, set2)
    local simiCount = -1
    for k, v in pairs(set1) do
        if set2[k] then
            simiCount = simiCount + 1
        end
    end
    local totalCount = set1.count + set2.count - simiCount
    print(string.format("%.1f", simiCount / totalCount * 100) .. "%")
end

for i = 1, K do
    local index1 = readFunc() index2 = readFunc()
    printSimilarity(sets[index1], sets[index2])
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值