标签:sum ret char += 相似度 ica type col 0.00
#include <iostream>
#include <vector>
#include <cmath>
template <typename DataType>
double mycosine(typename::std::vector<DataType>& arrayA, typename::std::vector<DataType>& arrayB) {
if(arrayA.empty() || arrayB.empty())
return 0;
double sumarrayA=0.0,sumarrayB=0.0;
double cosine=0.0;
for(typename::std::vector<DataType>::iterator itA=arrayA.begin(),itB=arrayB.begin();itA!=arrayA.end(),itB!=arrayB.end();++itA,++itB) {
sumarrayA+=(*itA)*(*itA);
sumarrayB+=(*itB)*(*itB);
cosine+=(*itA)*(*itB);
}
sumarrayA=sqrt(sumarrayA);
sumarrayB=sqrt(sumarrayB);
if((sumarrayA-0<0.0001) || (sumarrayB-0<0.0001)) {
return 0;
}
cosine/=(sumarrayA*sumarrayB);
return cosine;
}
int main() {
int length;
std::vector<int> arrayA;
std::vector<int> arrayB;
char tag=‘y‘;
int temp;
while(tag==‘y‘) {
arrayA.clear();
arrayB.clear();
std::cin>>length;
for(size_t i=0;i<length;++i) {
std::cin>>temp;
arrayA.push_back(temp);
}
for(size_t i=0;i<length;++i) {
std::cin>>temp;
arrayB.push_back(temp);
}
std::cout<<mycosine(arrayA,arrayB)<<std::endl;
std::cin>>tag;
}
return 0;
}
标签:sum ret char += 相似度 ica type col 0.00
原文地址:http://www.cnblogs.com/donggongdechen/p/7768718.html