简单的矩形计数
在一个 n×m 的矩阵中每个单元格都有一个数字 0 或 1,他们想知道在这个矩阵中四个顶点都是 1 的矩形有多少个(一个点,1×m,n×1 都不能算是一个矩形)。
输入格式:
多组测试数据,每组数据第一行为两个正整数 n,m (n≤100,m≤100),接下来是一个 n×m 的矩阵,每个元素只可能是 0 或 1。
输出格式:
对于每组测试数据,输出一行,符合题意的矩形的个数。
样例
#input
3 4
1 0 0 1
0 1 1 0
1 0 0 1
#output
1
Hint:矩形边界平行于矩阵边界
思路:
对除了右和下边界的点,每个点都分别判断是否存在构成矩阵的情况。
python实现
n,m = map(int,input().split())
z = [[0 for j in range(m)] for i in range(n)]
#将按行给定的数存为矩阵
for i in range(n):
z[i] = list(map(int,input().split()))
sum = 0
for i in range(0,n-1):
for j in range(0,m-1):
if z[i][j] == 1:
for x in range(1,m+1):
if (j+x) < m:
if z[i][j+x] == 1:
for y in range(1,n+1):
if (i+y)<n:
if z[i+y][j] == 1 and z[i+y][j+x] == 1:
sum += 1
print(sum)
仅记录刷题过程以及需要注意的知识点,方便自己复习。