Day 36 算法笔记之STL 6.2 set的常见用法和详解

#include<cstdio>
#include<cctype>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;

int main(){
	
	set<int> st;
	st.insert(3);
	st.insert(5);
	st.insert(2);
	st.insert(3);
	
	for(set<int>::iterator it = st.begin();it!=st.end();it++){
		printf("%d ",*it);
	}
	
	return 0;
}
int main(){
	
	set<int> st;
	for(int i=0;i<3;i++){
		st.insert(i);
	}
	set<int>::iterator it = st.find(1);
	printf("%d\n",*it);
	
	return 0;
}

1.Set Similarity

#include<cstdio>
#include<cctype>
#include<cstring>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;

set<int> martix[55];
void compare(int x,int y){
	int len1 = martix[x].size();
	int len2 = martix[y].size();
	
	int common = 0;
	int whole = len2;
	for(set<int>::iterator it=martix[x].begin();it!=martix[x].end();it++){
		if(martix[y].find(*it)!=martix[y].end()){
			common++;
		}else{
			whole++;
		}
	}
	
	
	double ratio = common*100.0/whole;
	printf("%.1f%\n",ratio);
	
}

int main(){
	
	int n;
	scanf("%d",&n);

	int num;
	for(int i=1;i<n+1;i++){
		scanf("%d",&num);
		for(int j=0;j<num;j++){
			int x;
			scanf("%d",&x);
			martix[i].insert(x);
		}
	}
	
	int m;
	scanf("%d",&m);
	int a,b;
	for(int i=0;i<m;i++){
		scanf("%d %d",&a,&b);
		compare(a,b);
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/aixiaoxiao13/article/details/121236461