版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nicht_sehen/article/details/84162608
问题描述
现在, 我们需要你来解决一项图像分类任务。
首先我们需要介绍下简单图像的数据存储形式,你可以粗略的认为图像在数字意义就是一个二维矩阵(我们这里不考虑通道),矩阵的每个位置的值表示图像该位置的像素点的值。
关于图像分类,我们希望把相似的两个图像尽可能分到一个类里。因此我们需要引入一个考察两个图像是否相似的标准,我们需要一个度量函数来表示两个图像的相似程度。
一个nn的图像可以看做一个nn维的向量。
如果两个图像是完全相同的,那么两个图像的每个对应的像素点都相同,即二维矩阵是完全相同,曼哈顿距离为0。
现在,你需要计算p=2时两个图像的dist_mk,即它们的欧几里得距离。
输入描述
第一行输入n表示图像的尺寸(即图片的高跟宽相等均为n)。
然后输入两个n*n的矩阵,分别表示两张照片。(保证题目中出现的数字均为正整数,且不超过100)
输出描述
输出一个整数(答案向下取整),表示两张图片的欧几里得距离。
样例输入
2
1 1
1 1
2 2
2 2
样例输出
2
(感觉自己还是用不惯c++的模式。。。。)
#include<stdio.h>
#include<math.h>
int main()
{
int n;
int a[100][100];
int b[100][100];
double ans = 0;
scanf("%d",&n);
for(int i = 1 ;i<=n ; i++)
for(int j = 1 ; j<=n ; j++)
scanf("%d",&a[i][j]);
for(int i = 1 ;i<=n ; i++)
for(int j = 1 ; j<=n ; j++)
scanf("%d",&b[i][j]);
for(int i = 1 ; i<=n ; i++)
for(int j = 1 ; j<=n ; j++)
ans += (double)abs(a[i][j]-b[i][j]) *abs(a[i][j]-b[i][j]);
ans = sqrt(ans);
printf("%d\n",(int)floor(ans));
return 0;
}