• 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;
    }
    
  • 相关阅读:
    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析
    Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
    PAT 1152 Google Recruitment
    PAT 1092 To Buy or Not to Buy
    PAT 1081 Rational Sum
    PAT 1084 Broken Keyboard
    PAT 1077 Kuchiguse
    PAT 1073 Scientific Notation
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338715.html
Copyright © 2020-2023  润新知