我有这个函数maxTransform。
提供给我的Psudo代码
设A是零索引的整数数组。对于0< = i< = j<长度(A),让Ai..j表示从索引i到索引j的A的子数组,包括在内。
将A的最大变换定义为通过以下过程获得的数组:
设B为列表,最初为空。
返回的数组定义为A的最大变换。我们用S(A)表示它。 我们需要找到S的总和(S(A))。如果总和非常大,找到模10 ^ 9 + 7
正确的代码如下所示。
#!/bin/python
import sys
def solve(A):
# Return the sum of S(S(A)) modulo 10^9+7.
sa = maxTransform(A)
#debug
print ('sa = {} '.format(sa))
#debug -ends
ssa = maxTransform(sa)
#debug
print ('ssa = {} '.format(ssa))
#debug -ends
return sum(ssa)%(10**9+7)
def maxTransform(a):
b=[]
lenA = len(a)
for k in range(0, len(a)):
for i in range(0, len(a)-k):
j=i+k
#debug
print ('k = {}, i={}, j = {}, a = {} '.format(k, i, j, max(a[i:j+1])))
#debug -ends
b.append(max(a[i:j+1]))
#for i -ends
#for k -ends
return b
if __name__ == "__main__":
n = int(raw_input().strip())
a = map(int, raw_input().strip().split(' '))
result = solve(a)
print result
输入格式:
示例:输入:
3
3 2 1
58
A = [3,2,1]
S(A) = [3,2,1,3,2,3]
S(S(A) = [3,2,1,3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3]