楼主先不要封题,我想到一个方法,可能比较快,一会受累测一下啊
收到 楼主试试这个,我感觉不算慢{:5_109:}
def fun312(arr):
if arr == []:
return 0
res = 0
N = len(arr)
for i in range(0,N//2):
alpha = (i + 1)*(N - i)
res = res + (arr + arr)* alpha
if N % 2:
alpha = (N//2 + 1)*(N - N//2)
res = res + arr*alpha
return res
TJBEST 发表于 2020-1-22 20:40
楼主试试这个,我感觉不算慢
1217 ms zltzlt 发表于 2020-1-22 14:40
解答错误
输入:
汗~是我疏忽了……
def solve(lst):
res = times = 0
while len(lst)>1:
times += len(lst)
res += (lst+lst[-1]) * times
#print('调试',lst,lst[-1],times)
lst = lst
else:
if lst:
res += lst*(times+1)
return res
if __name__ == '__main__':
print('示例1 输出:',solve())
print('示例2 输出:',solve())
改善了一下,不用递归了。def func312(array):
l, res = len(array), 0
for i in range(0, l):
for j in range(i+1, l+1):
for each in array:
res += each
return res
print('array 的答案是: ', func312())
print('array 的答案是: ', func312())
print('array 的答案是: ', func312()) Croper 发表于 2020-1-22 14:51
写成一行的版本
厉害厉害 Croper 发表于 2020-1-22 14:51
写成一行的版本
这应该是这道题最好的解法了 def add(num:int,length,list1):
list2 = []
for i in range(length):
if i+num<=length:
list2.append(sum(list1))
return list2
def solve_312(list1:list):
lenght = len(list1)
sum_list = []
for i in range(1,lenght):
sum_list.extend(add(i,lenght,list1))
return sum(sum_list)+sum(list1)
print(solve_312())
一把梭子直接干,暴力解决,完事收工!{:9_237:}
请楼主帮忙测试一下,非常感谢!!!
昨天忙,没带电脑,今天补上! def fun312(x):
sub_array = []
for i in range(len(x)):
for j in range(i+1,len(x)+1):
sub_array.append(x)
return sum()
页:
1
[2]