1123:影像相似度(C C++)

英語不及格的小白發表於2020-10-14

【題目描述】

給出兩幅相同大小的黑白影像(用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<iostream>
#include <cstdio>
using namespace std; 
int main() 
{
	int n,m;
	cin>>n>>m;//黑白影像大小 
	int a[n][m],b[n][m];
	//影像a輸入 
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	int s=0; //計數器從0開始 
	double x=m*n;//影像大小 
	//影像b輸入 同時比較同位置影像a的資料是否相同  
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>b[i][j];
			if(a[i][j]==b[i][j]) //相同則 
				s++;			//計數器s++ 
		}
	}
	printf("%.2lf",s*100/x);//保留兩位小數 且化為百分比形式輸出 
    return 0;
}

相關文章