标签:pat
代码:
#include<cstdio> #include<cstring> #include<set> using namespace std; set<int> st[55]; int main() { int n,m,k; while(scanf("%d",&n)==1) { double dp[100][100]; for(int i=0; i<55; i++) { for(int j=0; j<55; j++) { dp[i][j]=-1.0; } } for(int i=1; i<=n; i++) { st[i].clear(); scanf("%d",&m); for(int j=0; j<m; j++) { int x; scanf("%d",&x); st[i].insert(x); } } scanf("%d",&k); while(k--) { int x,y; char c='%'; scanf("%d%d",&x,&y); if(st[x].size()==0&&st[y].size()!=0) { printf("0.0"); printf("%c\n",c); continue; } if(st[x].size()!=0&&st[y].size()==0) { printf("0.0"); printf("%c\n",c); continue; } if(x==y) { printf("100.0"); printf("%c\n",c); continue; } set<int>::iterator it; int cnt=0; //printf("%lf\n",dp[x][y]); if(dp[x][y]==-1.0) { //printf("-----\n"); for(it=st[x].begin(); it!=st[x].end(); it++) { if(st[y].find(*it)!=st[y].end()) cnt++; } dp[x][y]=cnt*1.0/(st[x].size()+st[y].size()-cnt); } //printf("%d\n",cnt); printf("%.1lf",dp[x][y]*100); //char c='%'; printf("%c",c); printf("\n"); } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
pat(A) 1063. Set Similarity(STL)
标签:pat
原文地址:http://blog.csdn.net/xky1306102chenhong/article/details/47622441