鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 180

[复制链接]
发表于 2018-6-12 09:32:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-15 10:12:38 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-15 10:58:50 | 显示全部楼层
list1 =[28, 12, 89, 15, 28, 4, 36, 55]
list1.sort()
count = 0
num = -1
num1 = 0
result = 1
list2= []
while True:
    if count <= (len(list1)-1)/2:  
        list2.append(list1[count]+list1[num])
        num -=1
        count+=1
    else:
        break
for each in range(len(list2)):
    if num1 < len(list2):
        result = result * list2[each]
print(result)
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-15 14:48:31 From FishC Mobile | 显示全部楼层
好题~~。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-15 18:17:15 From FishC Mobile | 显示全部楼层
ok
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-30 17:51:41 | 显示全部楼层
了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-1 18:14:17 From FishC Mobile | 显示全部楼层
来学校
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-2 20:43:58 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-2 23:01:31 From FishC Mobile | 显示全部楼层
kkkkkkkkkkkkk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-4 12:39:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-4 15:52:20 | 显示全部楼层
x = [28, 12, 89, 15, 28, 4, 36, 55]
x.sort()

a = x[:int(len(x)/2)]
b = x[int(len(x)/2):]
b.reverse()

result = 1
for each in zip(a, b):
    result *= sum(list(each))

print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-14 18:21:14 | 显示全部楼层
本帖最后由 指头比思想慢 于 2018-7-14 18:27 编辑

这应该是旅行商问题吧,数字给多了容易挂掉
def my_max(x):
    biger = 0
    if len(x) == 2:
        return x[0] + x[1]
    elif len(x) == 1:
        return x[0]
    else:
        for i in x:
            y = x.copy()
            y.remove(i)
            for p in y:
                num_add = i + p
                z = y.copy()
                z.remove(p)
                t = num_add * my_max(z)
                if t > biger:
                    biger = t
        return biger
    
x = [28,12,89,15,28,4,36,55]
print(my_max(x))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-19 23:51:05 | 显示全部楼层
这题直觉就是乘数越接近乘积越大,像矩形周长一定时求面积最大的问题

但是,如果不严格证明的话,正确性是通不过的吧,枚举又太恐怖了
def fun(lst):
    new_lst = sorted(lst)
    result = 1
    for i in range(len(lst)//2):
        result *= (new_lst[i] + new_lst[-i-1])
    return result

希望楼主的答案有证明过程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 14:54:14 | 显示全部楼层
求出所有符合条件的组合再取最大值
def fun(nums):
    from itertools import combinations
    all_comb = [each for each in combinations([item for item in combinations(nums, 2)], 4)
                if sorted([c for r in each for c in r]) == sorted(nums)]
    result = [eval("*".join([str(sum(item)) for item in each])) for each in all_comb]
    return max(result), all_comb[result.index(max(result))]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 10:57:02 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 21:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表