集合相似度(用c++解决)

#include<iostream> using namespace std; #include<set> set<int> u[55]; double similar(int a, int b) { int same = 0; double intersection, Union; for (set<int>::iterator pos = u[a].begin(); pos != u[a].end(); pos++) { if (u[b].find(*pos) != u[b].end()) { same++; } } intersection = same; Union = u[a].size() + u[b].size() - same; return (intersection / Union) * 100; } int main(void) { int N, K,num; scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d", &K); for (int j = 0; j < K; j++) { scanf("%d", &num); u[i].insert(num); } } int g,a,b; double result; scanf("%d", &g); for (int i = 0; i < g; i++) { scanf("%d %d", &a, &b); result = similar(a-1, b-1); printf("%.2lf%%\n", result); } }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号