应某博友提问,写以下博文解析
题目如下:
给你两个相同大小的向量 A B,求出他们的余弦相似度
返回 2.0000 如果余弦相似不合法 (比如 A = [0] B = [0]).
样例
给出 A = [1,
2, 3], B = [2, 3 ,4].
返回 0.9926.
给出 A = [0], B = [0].
返回 2.0000
这个题目谈不上解题思路了,因为本质上是数学公式题,需要对余弦的数学公式有一定了解,如图:

思路代码实现如下:
void Method(vector<int> &a,vector<int> &b)
{
int u=0,dl=0,dr=0;
for(int i=0;i<(int)a.size();++i)
{
u+=a[i]*b[i];
dl+=(int)pow(a[i],2);
dr+=(int)pow(b[i],2);
}
double m=pow(dl,0.5)*pow(dr,0.5);
if((int)m==0||u==0)
printf("%f",2.0);
else
printf("%f",(double)u/m);
}
本文介绍了一种计算两个向量余弦相似度的方法,包括特殊情况的处理。通过具体的代码实现展示了如何根据数学公式计算两个向量之间的余弦相似度。
2932





