#include <iostream>
#include <stdio.h>
#include <set>
using namespace std;
int main()
{
int N,M,K,x,y,j,i;
double s,c;
cin>>N;
set<int>a[50];
for(i=1;i<=N;i++)
{
cin>>M;
for(j=0;j<M;j++)
{
cin>>x;
a[i].insert(x);
}
}
set<int>b;
set<int>::iterator its;
set<int>::iterator it;
cin>>K;
for(i=0;i<K;i++)
{
c=0;
cin>>x>>y;
for(it=a[x].begin;it!=a[x].end;it++)
b.insert(*it);
for(its=a[y].begin;its!=a[y].end;its++)
{
b.insert(*its);
if(*its==*it)
c++;
}
s=c/b.size()*100%;
printf("%.2s\n",s);
}
return 0;
}
为什么报错?实验6.3set
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 乘风xs 2023-04-22 11:05关注
有多处错误:
1.在头文件中应该包含 cstdio 而不是 stdio.h。
2.在使用迭代器时,需要在 begin() 后面加上括号
3在输出百分比时,需要用 %f%% 而不是 %s% 来表示百分数。
提供一份正确代码,望采纳#include <iostream> #include <cstdio> #include <set> using namespace std; int main() { int N, M, K, x, y, j, i; double s, c; cin >> N; set<int> a[50]; for (i = 1; i <= N; i++) { cin >> M; for (j = 0; j < M; j++) { cin >> x; a[i].insert(x); } } set<int> b; set<int>::iterator its; set<int>::iterator it; cin >> K; for (i = 0; i < K; i++) { c = 0; cin >> x >> y; for (it = a[x].begin(); it != a[x].end(); it++) b.insert(*it); for (its = a[y].begin(); its != a[y].end(); its++) { b.insert(*its); if (*its == *it) c++; } s = c / b.size() * 100.0; printf("%.2f%%\n", s); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 抖音咸鱼付款链接转码支付宝
- ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
- ¥15 求螺旋焊缝的图像处理
- ¥15 blast算法(相关搜索:数据库)
- ¥15 请问有人会紧聚焦相关的matlab知识嘛?
- ¥15 网络通信安全解决方案
- ¥50 yalmip+Gurobi
- ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
- ¥15 itunes恢复数据最后一步发生错误
- ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了