鱼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 | 显示全部楼层
  1. x = [28, 12, 89, 15, 28, 4, 36, 55]
  2. x.sort()

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

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

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

使用道具 举报

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

这应该是旅行商问题吧,数字给多了容易挂掉

  1. def my_max(x):
  2.     biger = 0
  3.     if len(x) == 2:
  4.         return x[0] + x[1]
  5.     elif len(x) == 1:
  6.         return x[0]
  7.     else:
  8.         for i in x:
  9.             y = x.copy()
  10.             y.remove(i)
  11.             for p in y:
  12.                 num_add = i + p
  13.                 z = y.copy()
  14.                 z.remove(p)
  15.                 t = num_add * my_max(z)
  16.                 if t > biger:
  17.                     biger = t
  18.         return biger
  19.    
  20. x = [28,12,89,15,28,4,36,55]
  21. print(my_max(x))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


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

使用道具 举报

发表于 2020-8-13 14:54:14 | 显示全部楼层
求出所有符合条件的组合再取最大值
  1. def fun(nums):
  2.     from itertools import combinations
  3.     all_comb = [each for each in combinations([item for item in combinations(nums, 2)], 4)
  4.                 if sorted([c for r in each for c in r]) == sorted(nums)]
  5.     result = [eval("*".join([str(sum(item)) for item in each])) for each in all_comb]
  6.     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, 2024-3-29 07:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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