柯基不是天然卷
发表于 2018-6-6 23:09:59
本帖最后由 柯基不是天然卷 于 2018-6-6 23:11 编辑
from itertools import product
from itertools import combinations
import itertools
list =
def test_func1(num_list):
tmp_list = itertools.permutations(num_list)
global res_list
res_list=[]
for one in tmp_list:
res_list.append(one)
print '元素不允许重复出现排列总数为:', len(res_list)
test_func1(list)
MAX = 0
MAX2 = 0
for list_one in res_list:
a = 0
mul = 1
while a<=len(list)-1:
mul = mul * (list_one+list_one)
a+=2
MAX2 = mul
if MAX <= MAX2:
MAX = MAX2
print '最大的数是:',MAX
旅行,
发表于 2018-6-6 23:48:37
import random
time = 10
q = []
num = input('请输入您想输入的数组:')
num1 = num.split(',')
temp = []
for i in num1:
if i != ',':
temp.append(i)
print(temp)
if len(temp) % 2 == 0 :
while time > 0 :
random.shuffle(temp)
w = temp
n = len(w)
s = 0
while s ==len(w):
sum =1
sum1 =(int(w)+int(w))
sum = sum1 * sum
s += 2
q.append(sum)
time -= 1
print(q)
else:
print('请重新输入:')
asdfg5954457
发表于 2018-6-7 04:39:58
一直覺得用最簡單的邏輯去排列的話會有太多重複的組合
想了好久才想到一個方法是可以直接排出所有不重複的組合
比起考代碼感覺更像是訓練數學邏輯了
import copy
que=
def cal(num):
max=0
for each in LI(len(num)):
result=1
for k in range(int(len(num)/2)):
result = result*(num]+num])
if result > max:
print(result,' 找到更大的')
max=result
def LI(lenP):
if lenP==2:
return []
else:
b=[]
return makelist(lenP,lenP,b)
def makelist(lenA,lenP,b):
b2=[]
for i in b:
i.append(lenP-3)
i.append(lenP-4)
for i in range(lenA-lenP+2):
b1=copy.deepcopy(b)
for k in b1:
j=k.index(lenA-1-i)
k[-1],k=k,k[-1]
b2=b2+b1
b2=b2+b
lenP=lenP-2
if lenP>2:
return makelist(lenA,lenP,b2)
else:
return b2
cal(que)
大头目
发表于 2018-6-7 11:26:15
def a_m(list_n):
while list_n:
x = max(list_n)
y = min(list_n)
print(x,y)
list_n.remove(x)
list_n.remove(y)
print(list_n)
z = x + y
yield z
s = 1
for i in a_m():
s *= i
print(s)
#有点取巧,怎么强算还没想出来,递归的话估计会很慢吧
夏未至夜未央
发表于 2018-6-7 15:13:19
list1 =
list1.sort()
list2 = []
num = 0
result = 1
for i in list1:
num += 1
list2.append((i, list1[-num]))
list2 = list2[:len(list2)//2]
print(list2)
for i in list2:
result *= (i + i)
print(result)
久疤K
发表于 2018-6-7 19:43:34
这个题,个人认为与已知总和,求两个数的积的最大值一样。
就是尽量让每个和数接近。
>>> def fun( _list ):
ls = sorted(_list)
n = len( ls )
s = 1
for i in range(n//2):
s *= ls + ls
return s
>>> fun()
17795736
the0503
发表于 2018-6-8 00:20:19
本帖最后由 the0503 于 2018-6-8 10:04 编辑
抱歉,发表后没有任何提示,以为没提交上。
the0503
发表于 2018-6-8 00:21:22
本帖最后由 the0503 于 2018-6-8 10:05 编辑
同上。抱歉,没找到地方删帖。
the0503
发表于 2018-6-8 00:21:58
自己测试没有问题
a = (28, 12, 89, 15, 28, 4, 36, 55)
def foo(a):
if len(a) == 2:
list2 = []
n = a+a
list2.append(n)
return list2
else:
list2 = *len(a)
for i in range(1,len(a)):
list1 = list(a)
list2 = list1+list1
del list1,list1
b = tuple(list1)
list2 = max(listm(foo(b),list2))
return list2
def listm(list1,n):
for i in range(len(list1)):
list1 = list1*n
return list1
print(max(foo(a)))
the0503
发表于 2018-6-8 00:22:27
为什么提交不了
the0503
发表于 2018-6-8 00:23:44
提交不了?
the0503
发表于 2018-6-8 00:24:31
{:5_90:}
the0503
发表于 2018-6-8 00:26:57
占坑
the0503
发表于 2018-6-8 00:29:22
发不了啊
the0503
发表于 2018-6-8 00:31:14
# -*- coding: utf-8 -*-
a = (28, 12, 89, 15, 28, 4, 36, 55)
def foo(a):
if len(a) == 2:
list2 = []
n = a+a
list2.append(n)
return list2
else:
list2 = *len(a)
for i in range(1,len(a)):
list1 = list(a)
list2 = list1+list1
del list1,list1
b = tuple(list1)
list2 = max(listm(foo(b),list2))
return list2
def listm(list1,n):
for i in range(len(list1)):
list1 = list1*n
return list1
print(max(foo(a)))
the0503
发表于 2018-6-8 00:31:44
# -*- coding: utf-8 -*-
a = (28, 12, 89, 15, 28, 4, 36, 55)
def foo(a):
if len(a) == 2:
list2 = []
n = a+a
list2.append(n)
return list2
else:
list2 = *len(a)
for i in range(1,len(a)):
list1 = list(a)
list2 = list1+list1
del list1,list1
b = tuple(list1)
list2 = max(listm(foo(b),list2))
return list2
def listm(list1,n):
for i in range(len(list1)):
list1 = list1*n
return list1
print(max(foo(a)))
occk
发表于 2018-6-8 00:55:06
#相信用户的前提下:def list_max(*num):
num = list(num)
num.sort()
i = 0
y = 1
while i < len(num) / 2:
x = num + num[len(listx) - i - 1]
y *= x
i += 1
return y
listx = []
num = input("请输入偶数个数字:")
num = int(num)
for i in range(num):
num = input("请输入第"+str(i+1)+"个数字:")
listx.append(int(num))
print("任意两个数和之积最大为",list_max(*listx))
occk
发表于 2018-6-8 00:56:35
#相信用户的前提下:
def list_max(*num):
num = list(num)
num.sort()
i = 0
y = 1
while i < len(num) / 2:
x = num + num
y *= x
i += 1
return y
listx = []
num = input("请输入偶数个数字:")
num = int(num)
for i in range(num):
num = input("请输入第"+str(i+1)+"个数字:")
listx.append(int(num))
print("任意两个数和之积最大为",list_max(*listx))
lining
发表于 2018-6-10 10:55:08
1
随心所欲—1102
发表于 2018-6-10 22:22:02
看看