我在浏览题目时,发现了一个有趣的题目:图像相似度。
题目要求:
给出两幅相同大小的黑白图像(用 0−10−1 矩阵)表示,求它们的相似度。
说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
输入样例1:
3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1
输出样例1:
44.44
输入样例2:
4 4
1 1 0 0
0 1 1 0
1 0 0 1
0 0 1 1
0 1 0 0
1 0 1 1
0 0 1 1
0 1 1 1
输出样例2:
56.25
答案:
#include<iostream>
#include<iomanip>
using namespace std;
int n,m;
int a[105][105],b[105][105];
double x;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>b[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==b[i][j]){
x++;
}
}
}
cout<<fixed<<setprecision(2);
cout<<x/(m*n)*100;
return 0;
}