1407 - 图像相似度
题目描述
给出两幅相同大小的黑白图像(用 0−10−1 矩阵表示,00 代表白色,11 代表黑色)表示,求它们的相似度。
说明:若两幅图像在相同位置上的像素点颜色的值相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
比如:输入
2 2
1 0
0 1
1 1
1 1
数据解释:第一行的 22表示图像的尺寸是 2 行,每行 2 个整数;接下来的两行数据 1 0 和 0 1 表示第一幅图片的数值,再接下来两行数据 11 和 11 表示第二幅图片的数值;
从数据上可以看出,两幅图片有 2个数是相等的,因此两幅图片的相似度为 50%,实际输出不需要输出百分号,结果保留 2 位小数,因此实际输出 50.0。
输入
第一行包含两个整数 n 和 m ,表示图像的行数和列数,中间用单个空格隔开。(1≤n,m≤100)
之后 n 行,每行 m 个整数 0 或 1 ,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
之后 n 行,每行 m 个整数 0 或 1 ,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
输出
一个小数,表示相似度(以百分比的形式给出,但百分号不需要显示),精确到小数点后两位。
样例
输入
复制
3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1
输出
复制
44.44
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[110][110],b[110][110],n,m,i,j,c=0;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>b[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]==b[i][j])
{
c++;
}
}
}
double r=c*100.0/(n*m);
printf("%.2f",r);
}