Pagini recente » Cod sursa (job #487565) | Cod sursa (job #1471496) | Cod sursa (job #740185) | Cod sursa (job #1636927) | Cod sursa (job #2901389)
#!/usr/bin/env python
# coding: utf-8
# Jocul Flip
class FlipGame:
def __init__(self, n, m, matrix):
self.n = n
self.m = m
self.board = matrix
self.max_sum = 0
def board_sum(self):
total_sum = 0
for i in range(self.n):
for j in range(self.m):
total_sum += self.board[i][j]
return total_sum
def solve_flip(self):
self.max_sum = max(self.board_sum(), self.max_sum)
self.solve(0, 0)
return self.max_sum
def solve(self, k, l):
if k >= self.n and l >= self.m:
self.max_sum = max(self.board_sum(), self.max_sum)
return self.max_sum
dims = ['row', 'col']
sgns = [1, -1]
for dim in dims:
for sgn in sgns:
if dim == 'row' and k < self.n:
for jj in range(self.m):
self.board[k][jj] = sgn * self.board[k][jj]
self.solve(k+1, l)
elif dim == 'col' and l < self.m:
for ii in range(self.n):
self.board[ii][l] = sgn * self.board[ii][l]
self.solve(k, l+1)
else:
self.max_sum = max(self.board_sum(), self.max_sum)
def print_board(self):
print(self.board)
if __name__ == "__main__":
with open("flip.in") as fin:
n, m = map(int, fin.readline().split())
arr = []
for i in range(n):
line = list(map(int, fin.readline().split()))
arr.append(line)
flip = FlipGame(n, m, arr)
flip_sum = flip.solve_flip()
print(flip_sum)
with open("flip.out", "w+") as fout:
fout.write("{:.0f}".format(flip_sum))