酷代码 AI
菜单
服务商

题目描述 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入格式 第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1<=m<=100, 1<=n<=100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。 输出格式 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。 输入样例 3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 输出样例 44.44 说明/提示 用c++

```cpp #include <iostream> #include <iomanip> using namespace std; const int MAXN = 100; int image1[MAXN][MAXN]; int image2[MAXN][MAXN]; int main() { int m, n; cin >> m >> n; // 输入第一幅图像 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> image1[i][j]; } } // 输入第二幅图像 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> image2[i][j]; } } int sameCount = 0; // 统计相同像素点的数量 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (image1[i][j] == image2[i][j]) { sameCount++; } } } // 计算相似度 double similarity = (double)sameCount / (m * n) * 100; // 输出结果,精确到小数点后两位 cout << fixed << setprecision(2) << similarity << endl; return 0; } ``` 代码解释: 1. 输入部分: - 首先读取图像的行数 `m` 和列数 `n`。 - 接着使用两层嵌套的 `for` 循环分别读取第一幅图像和第二幅图像的像素值,并存储在二维数组 `image1` 和 `image2` 中。 2. 统计相同像素点数量: - 再次使用两层嵌套的 `for` 循环遍历两幅图像的每个像素点,比较对应位置的像素值。 - 如果相同,则将计数器 `sameCount` 加 1。 3. 计算相似度: - 用相同像素点的数量 `sameCount` 除以总像素点数量 `m * n`,再乘以 100,得到相似度的百分比。 4. 输出结果: - 使用 `fixed` 和 `setprecision(2)` 来确保输出结果精确到小数点后两位。最后将相似度输出。 [2025-12-01 14:44:50 | AI问答 | 555点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多