陈翰钦 2023-09-17 08:41 采纳率: 50%
浏览 5
已结题

矩阵相似度 答案永远都是.00

现有这样一题:描述
给出两幅相同大小的黑白图像(用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

我的源码是

#include<bits/stdc++.h>
using namespace std;
int main(){
    int m,n,a=0,mn;double s;
    cin>>m>>n;
    int jun1[m+1][n+1],jun2[m+1][n+1];
    for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++) cin>>jun1[i][j];
    for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++) cin>>jun2[i][j];
    for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++){
            if(jun1[i][j]==jun2[i][j]) a++;
        }
    mn=m*n;
    s=a*100/mn;
    cout<<s<<endl;
    cout<<fixed<<setprecision(2)<<s<<endl;
}

为何我的结果是44.00?

img


求解答!

  • 写回答

3条回答 默认 最新

  • a5156520 2023-09-17 09:31
    关注

    因为第16右边式子是整数除法,小数被忽略了,可以在式子开头乘以1.0,将运算变为浮点数类型运算,以保留除法的小数结果;

    然后将for循环中的m和n调换一下位置,因为m是行,n是列。

    修改如下:

    参考链接:


    
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        // https://www.luogu.com.cn/problem/B2103
        int m,n,a=0,mn;double s;
        cin>>m>>n;
        int jun1[m+1][n+1],jun2[m+1][n+1];
        
        // 将下面循环中的m和n调换一下位置,因为m是行,n是列 
        for(int i = 1;i<=m;i++)  
            for(int j = 1;j<=n;j++) cin>>jun1[i][j];
        for(int i = 1;i<=m;i++)
            for(int j = 1;j<=n;j++) cin>>jun2[i][j];
        for(int i = 1;i<=m;i++)
            for(int j = 1;j<=n;j++){
                if(jun1[i][j]==jun2[i][j]) a++;
            }
        mn=m*n;
    //  将式子乘以1.0,将运算变为浮点数类型运算,以保留小数结果
        s=a*1.0*100/mn;
       // cout<<s<<endl;
       // https://wenku.csdn.net/answer/7638762f15ae4e96bcf6511ff995ce8f 
        cout<<fixed<<setprecision(2)<<s<<endl;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥50 用AT89C52单片机设计一个温度测量与控制电路
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用
  • ¥20 51单片机学习中的问题
  • ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
  • ¥15 Python中knn问题
  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库