• 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1123:图像相似度


    时间限制: 1000 ms 内存限制: 65536 KB
    提交数: 5813 通过数: 3910

    【题目描述】

    给出两幅相同大小的黑白图像(用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

    【来源】

    NO

    代码

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    int m,n;
    int main ()
    {
    	cin>>m>>n;
    	int a[m+1][n+1],b[m+1][n+1];
    	memset(a,0,sizeof(a));
    	memset(b,0,sizeof(b));
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			cin>>a[i][j];
    		}
    	}
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			cin>>b[i][j];
    		}
    	}
    	double sum=0.00;
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			if(a[i][j]==b[i][j]) sum++;
    		}
    	}
    	double temp;
    	temp=sum/(m*n)*100.0;
    	printf("%.2lf",temp);
    	return 0;
    }
    
  • 相关阅读:
    排序算法合集(冒泡,选择,插入,堆排,快排)
    codeforces 632+ E. Thief in a Shop
    nyoj-一笔画问题-欧拉图+联通判定
    hdu-1179-二分图最大匹配
    hdu-2063-二分图最大匹配
    (转)二分图的最大匹配、完美匹配和匈牙利算法
    hdu-2444-二分图判定+最大分配
    C
    E
    C
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12339091.html
Copyright © 2020-2023  润新知