from pip._vendor.distlib.compat import raw_input
class Solution:
#获得输入参数
def get_parameters(self):
# get the input from console
input_array = raw_input().split(" ")
n = input_array[0]
m = input_array[1]
a = input_array[2]
b = input_array[3]
print(n, m, a, b)
return int(n),int(m),int(a),int(b)
#构建矩阵
def create_matrix(self,n,m):
# create the matrix
matrix = []
for i in range(int(n)):
inner_list = []
for j in range(int(m)):
ele = (i + 1) * (j + 1) % 10
inner_list.append(ele)
matrix.append(inner_list)
# print(matrix)
return matrix
#对每行使用滑动窗口获得新的矩阵
def getRowMaxWindow(self,matrix,row,col,w):
queue=[]
result_list=[]
for i in range(row):
inner_list=[]
for j in range(col):
while queue and matrix[i][queue[-1]]=w-1:
inner_list.append(matrix[i][queue[0]])
result_list.append(inner_list)
return result_list
#在每行使用滑动窗口后获得的矩阵基础上,对每列使用滑动窗口
def getColMaxWindow(self,matrix,row,col,w):
queue=[]
result_list=[]
for j in range(col):
inner_list=[]
for i in range(row):
while queue and matrix[queue[-1]][j]=w-1:
inner_list.append(matrix[queue[0]][j])
result_list.append(inner_list)
return result_list
#对矩阵求和
def getSum(self,matrix,row,col):
sum=0
for i in range(row):
for j in range(col):
sum+=matrix[i][j]
return sum
if __name__=="__main__":
so=Solution()
n,m,a,b=so.get_parameters()
matrix=so.create_matrix(n,m)
print(matrix)
res_matrix=so.getRowMaxWindow(matrix,n,m,b)
print(res_matrix)
res_matrix2=so.getColMaxWindow(res_matrix,n,m-b+1,a)
print(res_matrix2)
#行列反了,因为getCol返回的matrix是行列反的
sum=so.getSum(res_matrix2,m-b+1,n-a+1)
print(sum)
作者:flying_1314