hdu 2034 - 集合操作
题意:集合A,B,计算集合差A-B(求只在集合A内的数)
解法:
选用STL内的集合set
1.建立set
1: #include<set>
2:
3: set<int> se;
2.关于集合的遍历,固定的格式:
用容器的iterator访问所有数据。
1: for(set<int>::iterator it=a.begin();it!=a.end();it++){
2: //TO DO
3: }
3.相应的用*it访问set内的数据
4.set内的数据会自动排序,从小到大的顺序。
5.关于find()操作:
如果找不到,会返回set.end()
附上我的代码:
1: #include<iostream>
2: #include<cstdio>
3: #include<cstdlib>
4: #include<string>
5: #include<string.h>
6: #include<set>
7: using namespace std;
8: int main(){
9: int n,m,tmp;
10: while(scanf("%d %d",&n,&m)!=EOF&&(n||m)){
11: set<int> a,b;
12: while(n--){
13: scanf("%d",&tmp);
14: a.insert(tmp);
15: }
16: while(m--){
17: scanf("%d",&tmp);
18: b.insert(tmp);
19: }
20: int cnt=0;
21: for(set<int>::iterator it=a.begin();it!=a.end();it++){
22: if(b.find(*it)==b.end()){
23: printf("%d ",*it);
24: cnt++;
25: }
26: }
27: if(cnt==0)printf("NULL");
28: printf("\n");
29: }
30: }
31: