集合相似度-easy-stl-set

Posted am6a6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合相似度-easy-stl-set相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstdio>
#include<set>
#define MAXSIZE 51
using namespace std;
set<int> s[MAXSIZE];/*建立set数组,自动除去重复的并且升序排好,然后利用count函数即可,知识点:stl-set*/
double Same(int t1, int t2) {
	double result = 0.0;
	int counter = 0;
	for (auto it = s[t1].begin(); it != s[t1].end(); ++it) {
		if (s[t2].count(*it))//count函数
			++counter;
	}
	result = (counter * 1.0) / (s[t1].size() + s[t2].size() - counter);
	return result;
}
int main() {
	int N, K;
	cin >> N;
	for (int i = 1, num; i <= N; ++i) {
		cin >> num;
		for (int j = 0, temp; j < num; ++j) {
			cin >> temp;
			s[i].insert(temp);
		}
	}
	cin >> K;
	for (int i = 0, t1, t2; i < K; ++i) {
		cin >> t1 >> t2;
		printf("%.2f%%
", 100 * Same(t1, t2));
	}
	return 0;
}

以上是关于集合相似度-easy-stl-set的主要内容,如果未能解决你的问题,请参考以下文章

天梯程序设计竞赛 L2-005. 集合相似度 STL

L2-005. 集合相似度

关于集合的相似度测量方法

团体天梯练习 L2-005 集合相似度

使用MinHash算法计算两个集合的相似度

L2-5 集合相似度 (set的应用)