测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38895. 最小矩阵小蓝有一个100行100列的矩阵,矩阵的左上角为1。其它每个位置正好比其左边的数大2,比其上边的数大1。例如,第1行第2列为3,第2行第2列为4,第10行第20列为48。小蓝想在矩阵中找到一个由连续的若干行、连续的若干列组成的子矩阵,使得其和为2022,请问这个子矩阵中至少包含多少个元素(即子矩阵的行数和列数的乘积)。

填空题 困难

题目描述

最小矩阵

小蓝有一个100行100列的矩阵,矩阵的左上角为1。其它每个位置正好比其左边的数大2,比其上边的数大1。

例如,第1行第2列为3,第2行第2列为4,第10行第20列为48。

小蓝想在矩阵中找到一个由连续的若干行、连续的若干列组成的子矩阵,使得其和为2022,请问这个子矩阵中至少包含多少个元素(即子矩阵的行数和列数的乘积)。

参考答案

#初始化矩阵 ls=[[0]*100 for _ in range(100)] for i in range(100): ls[i][0]=i+1 for j in range(1,100): ls[i][j]=ls[i][j-1]+2 #求矩阵和 def sum_(x1,y1,x2,y2): ans=0 for i in range(x1,x2+1): for j in range(y1,y2+1): ans+=ls[i][j] return ans #暴力枚举 ans=10000 for x1 in range(100): for y1 in range(100): for x2 in range(x1,100): for y2 in range(y1,100): t=sum_(x1,y1,x2,y2) if t==2022: ans=min(ans,(x2-x1+1)*(y2-y1+1)) else : break print(ans) #运行结果:12
上一题 下一题