LuoguB2103 图像相似度 题解
Content
给定两个 \(m\times n\) 的矩阵 \(A,B\),求 \(A,B\) 两个矩阵的相似度,精确到小数点后 \(2\) 位。
定义两个矩阵的相似度为两个矩阵对应相同元素个数占矩阵大小的比例。
数据范围:\(1\leqslant n,m\leqslant 100\)。
Solution
强烈建议先做 B2019。
对于两个矩阵对应相同元素个数,我们可以开个计数器,然后枚举对应元素,将对应元素相等当做一个 \(0/1\) 值加入计数器中。设计数器最终的结果为 \(x\),最终的答案就是 \(\dfrac{x}{nm}\)。注意为了避免整除运算,需要将分子分母中的一个在输出时强制转换为浮点型变量,具体见代码。
Code
代码中再次运用到了省空间的技巧,即将只在输入中有用的数组直接用变量代替,然后再一边判断。
#include <cstdio>
using namespace std;
int n, m, ans, a[107][107];
int main() {
scanf("%d%d", &m, &n); //注意看题!!!
for(int i = 1; i <= m; ++i) for(int j = 1; j <= n; ++j) a[i][j] = Rint;
for(int i = 1; i <= m; ++i) for(int j = 1; j <= n; ++j) {int x; scanf("%d", &x); ans += (a[i][j] == x);}
return printf("%.2lf", ans * 100.0 / (n * m)), 0;
}

浙公网安备 33010602011771号