给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。时间限制:1000内存限制:65536
Input:
第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
input
3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1
output
44.44
m_n = input()
m,n = [int(i) for i in m_n.split(' ')]
img_1 = []
img_2 = []
for i in range(m):
tmp = input()
tmp = [int(i) for i in tmp.split(' ')]
img_1.append(tmp)
for i in range(m):
tmp = input()
tmp = [int(i) for i in tmp.split(' ')]
img_2.append(tmp)
num = 0
for i in range(m):
for j in range(n):
if img_1[i][j] == img_2[i][j]:
num += 1
output = num / (m*n) * 100
print("%.02f"%output)
代码可以这样写:
m, n = map(int, input('m,n:'). split())
tn1=[]
tn2=[]
for i in range(m):
tn1.extend(input('n个0或1,空格隔开:').split())
for i in range(m):
tn2.extend(input('n个0或1,空格隔开:').split())
cnt=0
for i,j in zip(tn1,tn2):
if i==j:
cnt+=1
res=cnt/len(tn1)
print(f'{res*100:.2f}%')
m,n:3 3
n个0或1,空格隔开:1 0 1
n个0或1,空格隔开:0 0 1
n个0或1,空格隔开:1 1 0
n个0或1,空格隔开:1 1 0
n个0或1,空格隔开:0 0 1
n个0或1,空格隔开:0 0 1
44.44%