均匀分配算法(Python2)

15 篇文章 0 订阅

题目1: 给出一个数字和一个数字的集合,把这个数字依次分成集合中的数字

def pureSeparate(number, numberList):
    resultLists = []
    for i in numberList:
        resultList = []
        b = number / i
        for j in range(0, i):
            resultList.append(b)
        resultLists.append(resultList)
    return resultLists


print pureSeparate(100, [2, 3, 4, 5])
[[50, 50], [33, 33, 33], [25, 25, 25, 25], [20, 20, 20, 20, 20]]

题目2: 已知一个数字和一个二维数组,该二维数组有相同的元素,将该数字以每个相同元素的个数评分,并依次匹配到该数组后,要求得出该形式:[[1, 50], [1, 50], [2, 33], [2, 33], [2, 33], [3, 25], [3, 25], [3, 25], [3, 25]]

def insertionNumber(number, originalList):
    list.sort(originalList)
    countList = []
    m = 0
    n = originalList.count(originalList[0])
    while n <= len(originalList):
        count = 0
        for i in range(m, n):
            count = originalList.count(originalList[i])
            break
        countList.append(count)
        n += count
        m += count

    s = 0
    l = 0
    for i in countList:
        l += i
        b = number / i
        for j in range(s, l):
            originalList[j].append(b)
        s = l
    return originalList


print insertionNumber(100, [['a'], ['a'], [2], [1], ['a'], [1], [2], [1], ['a']])
[[1, 33], [1, 33], [1, 33], [2, 50], [2, 50], ['a', 25], ['a', 25], ['a', 25], ['a', 25]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯洁的小魔鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值