Guest User

Untitled

a guest
Jun 24th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. ## Algorithm
  2.  
  3.  
  4. from random import randint, seed
  5.  
  6. import time
  7.  
  8. from support import *
  9.  
  10. seed()
  11.  
  12. global array_size
  13. global array
  14.  
  15. # Fill the grid
  16.  
  17.  
  18. @print_timing
  19. def solve_array32(array):
  20.  
  21. global array_size
  22.  
  23. half_array = array_size / 2
  24.  
  25. l_array = array[:half_array]
  26. r_array = array[half_array:]
  27.  
  28. max_so_far = 0
  29.  
  30. for x in xrange(half_array):
  31. sum = 0
  32. for y in l_array[x:]:
  33. sum += y
  34. max_so_far = max(max_so_far, sum)
  35.  
  36.  
  37. for x in xrange(half_array, array_size):
  38. sum = 0
  39. for y in r_array[x:]:
  40. sum += y
  41. max_so_far = max(max_so_far, sum)
  42.  
  43. max_l_middle = 0
  44. max_r_middle = 0
  45.  
  46. sum = 0
  47. for y in reversed(l_array):
  48. sum += y
  49. max_l_middle = max(max_l_middle, sum)
  50.  
  51.  
  52. sum = 0
  53. for y in r_array:
  54. sum += y
  55. max_r_middle = max(max_r_middle, sum)
  56.  
  57. max_so_far = max(max_so_far, max_r_middle + max_l_middle)
  58.  
  59. return max_so_far
  60.  
  61. @print_timing
  62. def solve_array2(array):
  63.  
  64. global array_size
  65.  
  66. max_so_far = 0
  67. for x in xrange(array_size):
  68. sum = 0
  69. for y in array[x:]:
  70. sum += y
  71. max_so_far = max(max_so_far, sum)
  72.  
  73. print x
  74.  
  75. return max_so_far
  76.  
  77. @print_timing
  78. def solve_array(array):
  79.  
  80. global array_size
  81.  
  82. max_so_far = 0
  83. for x in xrange(array_size):
  84. for y in xrange(x, array_size):
  85. sum = 0
  86. for z in xrange(x, y):
  87. sum += array[z]
  88. max_so_far = max(max_so_far, sum)
  89.  
  90. return max_so_far
  91.  
  92. if __name__ == "__main__":
  93. max3 = solve_array32(array)
  94. max2 = solve_array3(array)
  95.  
  96. ##support
  97.  
  98. from random import randint, seed
  99.  
  100. import time
  101.  
  102. seed()
  103.  
  104. array_size = 10000
  105.  
  106.  
  107. array = []
  108.  
  109. def print_timing(func):
  110. def wrapper(*arg):
  111. t1 = time.clock()
  112. res = func(*arg)
  113. t2 = time.clock()
  114. print '%s took %0.3f ms' % (func.func_name, (t2-t1)*1000.0)
  115. return res
  116. return wrapper
  117.  
  118. for i in xrange(array_size):
  119. array.append(randint(-200,200))
  120.  
  121. @print_timing
  122. def solve_array3(array):
  123.  
  124. global array_size
  125.  
  126. half_array = array_size / 2
  127.  
  128. l_array = array[:half_array]
  129. r_array = array[half_array:]
  130.  
  131. max_so_far = 0
  132.  
  133. for x in xrange(half_array):
  134. sum = 0
  135. for y in l_array[x:]:
  136. sum += y
  137. max_so_far = max(max_so_far, sum)
  138.  
  139.  
  140. for x in xrange(half_array, array_size):
  141. sum = 0
  142. for y in r_array[x:]:
  143. sum += y
  144. max_so_far = max(max_so_far, sum)
  145.  
  146. max_l_middle = 0
  147. max_r_middle = 0
  148.  
  149. sum = 0
  150. for y in reversed(l_array):
  151. sum += y
  152. max_l_middle = max(max_l_middle, sum)
  153.  
  154.  
  155. sum = 0
  156. for y in r_array:
  157. sum += y
  158. max_r_middle = max(max_r_middle, sum)
  159.  
  160. max_so_far = max(max_so_far, max_r_middle + max_l_middle)
  161.  
  162. return max_so_far
Add Comment
Please, Sign In to add comment