pat(A) 1063. Set Similarity(STL)
代码:
#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; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步