Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- class Stack:
- def __init__(self):
- self.items = []
- def empty(self):
- return self.size() == 0
- def size(self):
- return len(self.items)
- def push(self, item):
- self.items += [item] #another way to append
- def pop(self):
- return self.items.pop()
- def top(self):
- return self.items[-1]
- matrix = []
- #f = open(sys.argv[1],'r')
- f = open('rectangle3.txt', 'r')
- for line in f:
- matrix.append(list(map(int, line.split())))
- row = len(matrix)
- col = len(matrix[0])
- St = Stack()
- def odd(x):
- if x % 2 != 0:
- return True
- return False
- for i in range(row):
- for j in range(col):
- if odd(matrix[i][j]):
- matrix[i][j] = 1
- else:
- matrix[i][j] = 0
- for l in matrix:
- print(l)
- print()
- def largestArea(arr, lenght):
- area = []
- items = []
- for i in range(lenght):
- area.append(0)
- for i in range(lenght):
- while(items):
- if (arr[i] <= arr[items[-1]]):
- items.pop()
- else:
- break
- if not St.items:
- t = -1
- else:
- t = items[-1]
- area[i] = i - t - 1
- #print(area[i], end = ' ')
- items.append(i)
- #print(area)
- while (items):
- items.pop()
- for i in range(lenght-1, -1, -1):
- while (items):
- if (arr[i] <= arr[items[-1]]):
- items.pop()
- else:
- break
- if not St.items:
- t = lenght
- else:
- t = items[-1]
- area[i] += t - i - 1
- #print(area[i], end = ' ')
- items.append(i)
- maxim = 0
- for i in range(lenght):
- area[i] = arr[i] * (area[i] + 1)
- if area[i] > maxim:
- maxim = area[i]
- print(area)
- return maxim
- def find_max_matrix(A):
- cur_maxim = 0
- for i in range(1, row):
- for j in range(col):
- if A[i][j] == 1:
- A[i][j] = A[i-1][j] + 1
- for i in range(row):
- maxim = largestArea(A[i], col)
- #print(maxim, end = ' ')
- if maxim > cur_maxim:
- cur_maxim = maxim
- for i in range(row-1, 0, -1):
- for j in range(col):
- if A[i][j]:
- A[i][j] = A[i][j] - A[i-1][j]
- return cur_maxim
- print(find_max_matrix(matrix))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement