NC22100. 图像相似度
描述
输入描述
第一行包含两个整数m和n,表示图像的行数和列数,用单个空格隔开。1≤m≤100, 1≤n≤100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。
输出描述
一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。
示例1
输入:
3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1
输出:
44.44
C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 488K, 提交时间: 2020-06-24 20:15:23
#include <bits/stdc++.h> using namespace std; int main() { int n=0,a,b,c[10000],d; cin>>a>>b; for(int i=0;i<a*b;i++) cin>>c[i]; for(int i=0;i<a*b;i++) {cin>>d; if(d==c[i]) n++;} cout<<fixed<<setprecision(2)<<n*1.0/(a*b)*100<<endl; }
C(clang 3.9) 解法, 执行用时: 2ms, 内存消耗: 372K, 提交时间: 2019-11-07 20:15:46
#include<stdio.h> int main() {int i,d,j,m,n,a[100][100]; float h; d=0; scanf("%d %d",&m,&n); for(i=0;i<(m*2);i++) {for(j=0;j<n;j++) {scanf("%d",&a[i][j]);}} for(i=0;i<(m);i++) {for(j=0;j<(n);j++) {if(a[i][j]==a[i+m][j]) {d++;}}} h=(100.0*d)/(m*n); printf("%.2f",h);}
C++ 解法, 执行用时: 3ms, 内存消耗: 532K, 提交时间: 2021-12-08 20:05:48
#include<bits/stdc++.h> using namespace std; int main() { double m,n,p[10009]; cin>>m>>n; m=m*n; for(int i=0;i<m;i++) { cin>>p[i]; } double t=0; for(int i=0;i<m;i++) { cin>>n; if(n==p[i]) t++; } printf("%.2lf",t*100/m); }
Python3(3.5.2) 解法, 执行用时: 28ms, 内存消耗: 3440K, 提交时间: 2018-12-31 17:55:36
m, n = map(int, input().split()) a = [list(map(int, input().split())) for i in range(m)] b = [list(map(int, input().split())) for i in range(m)] print('%.2f' % (sum(a[i][j] == b[i][j] for j in range(n) for i in range(m)) * 100 / m / n))